默认的模块和行动 Default Modules and Actions
当一个程序规则没有定义模块或行动的参数时, settings.yml文件中的值就会用默认值代替: default_module: 默认模块请求参数, 是默认模块的默认值。 default_action: 默认行动请求参数, 是索引行动的默认值。
symfony为特殊情况提供了默认页。 在 $sf_symfony_data_dir/modules/default/目录下存放着默认模块, 在程序出错的情况下, symfony就执行默认模块的一个行动。 settings.yml文件则根据错误的不同, 定义了可以执行的行动:
error_404_modeule 和error_404_action: 当用户输入的URL和任何程序都不匹配时或当一个sfError404Exception产生时, 就调用这个模块。 默认值是default/error404。
login_module和login_action: 当一个未经认证的用户试图访问由security.yml中定义为secure的页面时(请参考第6章的解释), 这个行动将被调用。 默认值是default/login。
secure_module and secure_action: 当一个用户不具备某个行动所需的信任证书时, 这个行动将被调用。 默认值是default/secure。
module_disabled_module和module_disabled_action: 当一个用户请求一个被module.yml定义为disabled的模块时, 这个行动将被调用。 默认值是default/disabled。
unavailable_module和unavailable_action: 当一个用户从一个被禁用的程序(application)中请求一个页面时, 这个行动将被调用。 默认值是default/unavailable。 要禁用一个程序(application), 在settings.yml中关闭available参数即可。
在将一个程序(application)部署到生产环境中之前, 你需要定制这些行动, 因为默认模块的模板在页面中都包括了symfony的标识。
图19-1是页面之一的404错误页面的截屏。

你可以通过两种方法重载这些默认页:
对于settings.yml文件中定义的所有行动(index,error404, login, secure,disabled和unavailable)和所有相应的模板(indexSuccess.php, error404Success.php, loginSuccess.php, secureSuccess.php, disabledSuccess.php和unavailableSuccess.php), 你可以在程序(application)的modules/目录中创建自己的默认模块。
对于settings.yml文件中的默认模块和行动, 你可以将参数值设为你的程序(application)的页面。
另外, 还有两个页面也包括symfony标识, 所以在实际部署之前也需要对它们重新定制。这两个页面不在默认模块中, 因为只有当symfony不能正常运行时, 才会被调用。你可以在$sf_symfony_data_dir/web/errors目录中看到这些页面:
error500.php: 当生产环境中出现内部服务器错误时, 该页面被调用。在SF_DEBUG设定为true并且出现一个错误时, symfony会显示所有的执行栈和精确的错误信息(请参看第16章的介绍)。
unavailable.php: 当用户请求一个缓存已被清除的页面时(也就是在调用symfony的clear-cache任务和该任务结束之间请求时), 该页面被调用。 对于一个有着很大缓存的系统, 清除缓存可能需要几秒。symfony在部分清除缓存的情况下
要定制这些页面, 只需在程序(application)的web/errors目录中创建error500.php和unavailable.php即可。symfony将用这些页面代替默认页面。
NOTE 注意: 如果要将请求转向unavailable.php页面, 你应该将settings.yml中的check_lock设置为on. 该参数的默认值是off, 因为它会为每一个请求增加极少的一些负担。