创建操作
~操作方法必须是以action
开头的公有方法
操作ID
~操作通常是用来执行资源的特定操作,因此, 操作ID通常为动词,如
view
,
update
等
~操作ID应仅包含
英文小写字母
、
数字
、
下划线
和
中横杠
,操作ID中的中横杠用来分隔单词
~可通过两种方式创建操作ID,
内联操作
和
独立操作
~内联操作容易创建,在
无需重用
的情况下优先使用; 独立操作相反,主要
用于多个控制器重用
, 或重构为扩展
操作方法
内联操作方法的名字是根据操作ID遵循如下规则衍生:
- 将每个单词的第一个字母转为大写;
- 去掉中横杠;
- 增加
action
前缀.
例如index
转成 actionIndex
, hello-world
转成 actionHelloWorld
。
attention:方法名字大小写敏感,而且方法必须是为公有方法,否则不能定义为内联操作。
独立操作:如果你计划在不同地方重用相同的操作, 或者你想重新分配一个操作,需要考虑定义它为独立操作。
独立操作通过继承yii\base\Action或它的子类来定义
通过控制器中覆盖yii\base\Controller::actions()方法在
action map
中申明
创建一个独立操作类,需要继承
yii\base\Action
或它的
子类
,并实现公有的名称为
run()
的方法,
run()
方法的角色和操作方法类似
操作结果
操作方法或独立操作的run()
方法的返回值非常重要, 它表示对应操作结果。
返回值可作为响应对象,作为响应发送给终端用户
操作参数
对于yii\web\Application网页应用, 每个操作参数的值从$_GET
中获得,参数名作为键
如果想让操作参数接收数组值,需要指定$id为array
,如下所示:
public function actionView(array $id, $version = null)
{
// ...
}
修改默认操作
默认操作默认为 index
,如果想修改默认操作, 只需简单地在控制器类中覆盖这个属性,如下所示:
namespace app\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
public $defaultAction = 'home';
public function actionHome()
{
return $this->render('home');
}
}