THINKPHP5第三章(接着上次的第二章讲)

上次我们讲到控制器中的emty方法也就是空方法,下面我们来说说这个方法。假设这里用户在浏览器的导航栏中输入了一个没有被定义的方法,那么很明显,视图层会提示你不存在此方法。那么我们可以利用这个empty空方法来实现你自己的页面,比如说像这样子的。首先你的如手册所说在控制器下面定义一个empty方法。记住方法名前面有个下_,像这样子_empty(){}前面跟上修饰器。接着我们可以在{}内实现你想要的结果。比如说,如果出现了不存在的路由地址(路由地址这里就指的是url)我们可以在空方法中重定向到404页面(这个404页面可以是你自己的,也可以是自带的。)或者你亦可以在方法体类执行你自己定义的另外一个方法,记住是这样子的 return $this->方法名。如下图所示

这个方法实际上很简单吧。接着我讲跳转方法和重定向方法。跳转中我们success方法和error方法。一个success默认跳转地址是$_SERVER['HTTP_REFERER'],如果大家好奇这个是是什么东西。可以打开你的编辑器。打印下这个全局变量就知道了。而error默认执行的操作则是,JavaScript:history.back(-1),所以会默认的回退到上一步浏览器操作。用途的话,例如在购物车页面用户付款后,提示成功或者失败。如果大家觉得默认的success和error模板样式很丑你们可以选择自行使用自己的模板样式。具体的操作可以修改config.php中的配置信息中的成功和失败的模板样式路径。可以指向public/下面。如图所示

可以使用如上图所示的模板变量。接下来我们说重定向redirect()方法。使用过3.2的朋友们对他应该不陌生吧,在tp5.0中他的使用方法跟Url::Build方法用法一致,一致。所以他同样可以这样使用,$this->redirect('模块方法',['cate_id'=>2]),当然也可以像url方法一样传递变量,要求是一个数组,然后键值对的形式,这样['data'=>'hello'],当然也可以多个参数变量,逗号分开就行。['data'='hello','name'=>'world'],同样此方法也可以定义路由的状态嘛,302,404....。在小括号中用逗号隔开,直接填写状态码即可。使用redirect助手函数还可以实现更多的功能。只需要链式操作即可可以记住路由地址再跳转,这个东西可以拿来做审核一样的东西。1->2->3->4,redirect()->remember()记住路由后,可以使用redirect()->restore()回退。

下面我说说多级控制器,多级控制器你可以理解为在同一个(类)模块下的不同方法操作,

class Index extends Controller {

<span style="color:#ff0000">class Index extends Controller 
{
  public funtion index(){

   }
  
  public funtion add(){}

  public funtion edit(){}
}</span>

}

相信大家看到这个东西就很熟悉了对吧,对应的分别是CURD操作(及增删改查),用途的话就很广了,这里大家自己去试试就应该能明白了吧。分层控制器跟这个差不多,他俩主要的区别还是路由的不同。所以这里大家参考下手册就能明了了。

下面是Rest控制器的作用。如果在某层控制器下面需要用到Restful方法,请在命名空间下面引入use think\controller\Rest;相信restful大家可能没听过,但是一定知道这个东西,这个东西可以对请求的类型或者资源进行判断,假设我们现在有个接口需要让我们返回text或则json或者HTML的数据,且处于安全考虑我们要求请求的类型必须是post,那么就可以如下图所示来操作啦,这里切记,不要忘记了在config.php中配置自己的格式等信息。如下图所示。

所以小伙伴们,明白了这个rest的重要性了嘛。不要再为返回什么遍历转换数据而发愁了。

下面是资源控制器的生成,记住是代码生成,如果下图所示

执行此命令行后会对应生成默认的几个路由,这个就跟larvarel的中那个很像。默认的几个如下图所示。

好了今天控制器里面的东西我们就讲完了。下次我们接着下面讲。拜

猜你喜欢

转载自blog.csdn.net/qq_39338006/article/details/80242203