动作(动作(Actions))
动作是应用的心脏,因为他包含了所有应用的逻辑。他们使用模型并定义变量给视图。当在应用中使用一个请求,URL中定义了一个动作和请求的参
数。
动作类动作类
动作是moduleNameActions类(继承自sfActions类)中名为executeActionName的方法,以模块组织在一起,模块动作类存储在actions目录的
actions.class.php文件中。
只有WEB目录下的文件能够被外部访问,前端控制脚本、图片、样式表和JS文件是公开的,即使PHP中方法不区分大小写,但symfony中区分,所
以不要忘了动作方法必须以小写execute开始,紧跟着是首字母大写的动作名。
如果动作类变得很大,你应该做一些分解并把代码放在模型层,动作应该尽量的保证短小(几行最好),所有的业务逻辑都应该放在模型层中。
可选的动作类语法可选的动作类语法
可以一个动作一个文件,文件的名称为动作名加Action.class.php,类名为动作名加Action,只是记得类继承自sfAction而非sfActions。
在动作中获取信息在动作中获取信息
动作类提供了一种访问控制器相关信息与核心symfony对象的方法,下面演示了如何使用:
<?php
define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/..'));
define('SF_APP', 'myapp');
define('SF_ENVIRONMENT', 'prod');
define('SF_DEBUG', false);
require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');
class mymoduleActions extends sfActions
{
public function executeIndex()
{
// Retrieving request parameters
$password = $this->getRequestParameter('password');
// Retrieving controller information
$moduleName = $this->getModuleName();
$actionName = $this->getActionName();
// Retrieving framework core objects
$request = $this->getRequest();
$userSession = $this->getUser();
$response = $this->getResponse();
$controller = $this->getController();
$context = $this->getContext();
// Setting action variables to pass information to the template
$this->setVar('foo', 'bar');
$this->foo = 'bar'; // Shorter version
}
}
上下文:上下文:
在前端控制器中一个sfContext::getInstance()的调用。在动作中,getContext()方法是单例模式(即所有的调用都是第一个实例,这对于存储指向与给
定请求相关的symfony核心对象的索引的情况是非常有用的)。
sfController:控制器对象 (->getController())
sfRequest:请求对象 (->getRequest())
sfResponse:响应对象 (->getResponse())
sfUser:用户Session对象 (->getUser())
sfDatabaseConnection:数据库链接 (->getDatabaseConnection())
sfLogger:日志对象 (->getLogger())
sfI18N:国际化对象(->getI18N())
可以在代码的任何位置放置sfContext::getInstance()。
动作终止动作终止
当动作执行完成后会出现各种行为,动作方法的返回值决定视图如何被实施。sfView类的常量经常被指定与模板来显示动作的结果。如果一个默认视
图被调用,动作应该以下面的代码结束:
return sfView::SUCCESS;
Symfony将寻找actionNameSuccess.php的模板,这是默认的行为,所以如果你忽略了return语句,symfony也将查找actionNameSuccess.php模
板,空动作也将触发同样的行为,如下:
# 将调用indexSuccess.php模板
public function executeIndex()
{
return sfView::SUCCESS;
}
# 将调用listSuccess.php模板
public function executeList()
{
}
如果要调用错误视图,动作将以下面语句结束:
评论0
最新资源