版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014559227/article/details/77556311
在yii 中 所有能被客户端访问的控制都应该继承 yii\web\Controller;
<?php
namespace app\modules\TestModule\controllers;
use yii\base\Controller;
class IndexController extends Controller
{
//指定布局视图,如果不指定,默认为main.php
public $layout = 'customMain';
//当访问路径没有指定方法名时,默认执行actionIndex动作
public $defaultAction = 'index';
//当方法被实例化的时候,会调用这个方法
public function init()
{
//使用新的布局文件
$this->layout = '';//布局名称
}
/**
* 声明一个能被客户端访问的方法
* 注意:action 是能够被客户端访问方法的前缀 只有加了这个前缀才能被客户端访问
*/
public function actionIndex()
{
}
/**
* 给请求的方法定义形参,形参就是从客户端传递过来的数据,当然你也可以将数据装入模型中
* htt[://host/index.php?r=TestModule/test/index1&age=22&name=谭勇
*/
public function actionIndex1($name='',$age='')
{
}
/**
* 当请求的方法不存在的是否会在这个函数中返回数组中寻求这个方法
*/
public function actions()
{
return array(
'demo' => array(
'class' => 'app\modules\TestModule\actions\DemoAction',
'name' => '谭勇',
'age' => 22
)
);
}
}
?>
针对上述DemoAction的实现。
namespace app\modules\TestModule\actions;
use yii\base\Action;
class DemoAction extends Action
{
public $name;
public $age;
/**
* @Override
* 该方法会被默认访问
*/
public function run()
{
echo 'action is demo and name : ' . $this->name . ' and age : ' . $this->age;
}
}
路由:
终端用户通过所谓的路由寻找到动作,路由是包含以下部分的字符串:
模型ID: 仅存在于控制器属于非应用的模块;
控制器ID: 同应用(或同模块如果为模块下的控制器) 下唯一标识控制器的字符串;
动作ID: 同控制器下唯一标识操作的字符串。
路由使用如下格式:
ControllerID/ActionID
如果属于模块下的控制器,使用如下格式:
ModuleID/ControllerID/ActionID