控制器定义
控制器位于模块的controller目录下,首先要继承基础控制器。
命名
控制器类名即文件名,也是URL中c部分、环境中con字段,除下划线(_)外不建议使用特殊字符
控制器不要以 _empty 命名,这是为空控制器保留的名称
动作
每个控制器包含若干个动作,动作是实现具体业务的代码块。定义一个 hello 动作:
namespace mod\home\controller;
use boa\controller;
class index extends controller{
public function __construct(){
parent::__construct();
}
public function hello(){
$name = $this->name; // 访问用户变量
$this->view->assign('title', $name); // 赋值给模板文件使用
$this->view->html(); // 输出模板
}
}
变量
对于环境var、$_POST、$_GET、$_COOKIE 4个变量中的参数,在动作中可以直接用对象运算符(->)来访问,比如本例中 $this->name 将依次从以上4个变量中取值,其等同于 $this->request->name 或 $this->request->v('name'),如果变量与控制器类中属性名称冲突,也可以使用后面的替代方法
如果配置了自动验证,访问时会自动执行相关验证逻辑,无需显式的额外操作
具体请参见变量及自动验证等相关章节
输出
动作中业务执行完后可以调用 $this->view->html($tpl, false) 输出模板内容,html() 支持两个参数:
- 第一个参数表示模板相对路径,可选,默认为当前动作对应的模板文件
- 第二个参数表示输出还是返回,可选,默认为输出
返回
如上所述,html() 的第二个参数为 true 时返回内容:
return $this->view->html('home.index.test', true);
view类中支持返回的还有 json()、 xml()、 jsonp()等方法
详情参见 view类