yii2是一个很好的框架,首先我们来看yii2中控制器可以干些什么:
1 .重定向 $this->redirect()(比如说做了一个登录界面,那括号里的url可以是你的主页)
2 .回到首页 $this->goHome()
3 .返回 $this->goBack()
4 .刷新当前页面 $this->refresh()
5 .渲染视图 $this->render(视图,注入视图数组数据)
6 .渲染没有layout的视图 $this->renderPartial(视图,注入视图数组数据)
先看一个简单例子:
<?php
namespace app\controllers; //定义命名空间
use yii\web\Controller; //引入命名空间
class TestController extends Controller{
public function actionIndex(){
echo 'hello world!';
}
}
?>
这个文档保留在controllers目录下,然后用网址打开便可看到hello world了。
关于控制器ID怎么写(也就是controllers目录里文件的名字怎么起),规则如下:
要将控制器ID转换控制器类的名字,应该做到以下几点 -
1. 删除连字符
2. 替换反向斜线
3. 添加Controller后缀
4.前面加上控制器命名空间
示例:
page 变成 app\controllers\PageController.
post-article 变成 app\controllers\PostArticleController.
user/post-article 变成 app\controllers\user\PostArticleController.
userBlogs/post-article 变成 app\controllers\userBlogs\PostArticleController.
下面我们来看使用action(有内联和独立两种方法),每个控制器都有一个默认动作,所以理解后便可自己改为其他动作:
首先说下动作ID(我一般用内联动作),规则如下:
1. 转换动作ID的所有单词的第一个字母转换成大写
2.删除连字符
3.添加 action 前缀
示例:
index 变成 actionIndex.
hello-world(如在上面的例子) 变成 actionHelloWorld.、
内联动作上面的例子就是这个。
顺便看一下怎么创建独立action:
第1步- 在项目根内创建 components 文件夹。在文件夹内创建一个名为 GreetingAction.php 的文件,并使用下面的代码。
<?php
namespace app\components;
use yii\base\Action;
class HeyAction extends Action {
public function run() {
return "hey";
}
}
?>
第2步 - 修改上述hello world动作的Test文件使用这种方式。
<?php
namespace app\controllers;
use yii\web\Controller;
class TestController extends Controller {
public function actions() {
return [
'hey' => 'app\components\HeyAction',
];
}
?>
访问浏览器这个的url便可看到hey。
另外, 控制器尽量满足:
1. 每一个动作都应该包含的代码只有几行,尽量小
2.用于响应视图
3.不要嵌入HTML
4.访问请求数据
5.调用模型的方法
6.不处理请求数据。这些应在模型中进行处理