yii2怎么使用控制器

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.不处理请求数据。这些应在模型中进行处理



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章