当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel5.1 框架控制器基础用法实例分析

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-02 10:15:20 浏览: 评论:0 

这篇文章主要介绍了Laravel5.1 框架控制器基础用法,结合实例形式分析了laravel5.1框架控制器的基本原理、定义与使用方法,需要的朋友可以参考下

本文实例讲述了Laravel5.1 框架控制器基础用法。分享给大家供大家参考,具体如下:

为什么要使用控制器

像我们之前写一些逻辑呢都是在Route(路由)中,搞得Route文件特别庞大,其实我们应该把这些逻辑都抽到一个控制器里,路由分发后到控制器,控制器做相应的操作,比如关于后台的逻辑应该抽到AdminController中,Route文件只管分发。

1 如何创建一个控制器

1.1.1 创建RESTful控制器

至于什么是RESTful?自行百度- -,我先简单说下,它里面自动填充了一些增删改查的方法,OK 我们在Artisan控制台创建:

php artisan make:controller Admin\\HomeController

然后 我们在 app/Http/Controller/Admin/ 下找到它:

  1. class HomeController extends Controller 
  2. { 
  3.   /** 
  4.    * Display a listing of the resource. 
  5.    * 
  6.    * @return \Illuminate\Http\Response 
  7.    */ 
  8.   public function index() 
  9.   { 
  10.   } 
  11.   /** 
  12.    * Show the form for creating a new resource. 
  13.    * 
  14.    * @return \Illuminate\Http\Response 
  15.    */ 
  16.   public function create() 
  17.   { 
  18.     // 
  19.   } 
  20.   /** 
  21.    * Store a newly created resource in storage. 
  22.    * 
  23.    * @param \Illuminate\Http\Request $request 
  24.    * @return \Illuminate\Http\Response 
  25.    */ 
  26.   public function store(Request $request) 
  27.   { 
  28.     // 
  29.   } 
  30.   /** 
  31.    * Display the specified resource. 
  32.    * 
  33.    * @param int $id 
  34.    * @return \Illuminate\Http\Response 
  35.    */ 
  36.   public function show($id) 
  37.   { 
  38.     // 
  39.   } 
  40.   /** 
  41.    * Show the form for editing the specified resource. 
  42.    * 
  43.    * @param int $id 
  44.    * @return \Illuminate\Http\Response 
  45.    */ 
  46.   public function edit($id) 
  47.   { 
  48.     // 
  49.   } 
  50.   /** 
  51.    * Update the specified resource in storage. 
  52.    * 
  53.    * @param \Illuminate\Http\Request $request 
  54.    * @param int $id 
  55.    * @return \Illuminate\Http\Response 
  56.    */ 
  57.   public function update(Request $request, $id) 
  58.   { 
  59.     // 
  60.   } 
  61.   /** 
  62.    * Remove the specified resource from storage. 
  63.    * 
  64.    * @param int $id 
  65.    * @return \Illuminate\Http\Response 
  66.    */ 
  67.   public function destroy($id) 
  68.   { 
  69.     // 
  70.   } 
  71. } 

每个方法就是它的字面意思,至于怎么使用,我们来注册一条路由就清楚了。

1.1.2 实现RESTful路由

  1. Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function (){ 
  2.   Route::resource('/', 'HomeController'); 
  3. }); 

resource是为RESTful风格的控制器注册多条路由的 我们可以在Artisan控制台看看:

php artisan route:list

如果没有什么错误的话,咱肯定会看见打印出来的表,表里面标明了每条路由的属性,如果你还是不太明白,那无所谓~咱以后的文章会频繁使用到这些内容哦。

1.2.1 普通控制器

在实际开发中啊 有时候咱不一定需要RESTful风格的服务器,我们只想要一个空的控制器来自己实现一些方法,可以这么生成:

php artisan make:controller UserController --plain

只要后面跟个plain标识符 就可以生成空的控制器啦。

1.2.2 单条路由使用控制器

上面是使用resource方法来对应控制器的动作了,像这种空的控制器咱怎么在路由中使用呢?

  1. /** 
  2.  * 控制器名@方法名 就可以了 
  3.  */ 
  4. Route::get('/user', 'UserController@index'); 
  5. /** 
  6.  * 这是在配置一些其他东西时的写法,因为要在数组中嘛,它对应的KEY是uses。 
  7.  */ 
  8. Route::get('/user', ['as' => 'showUser', 'uses' => 'UserController@index']); 

然后自行实现UserController的index方法就可以咯:

  1. class UserController extends Controller 
  2. { 
  3.   public function index() 
  4.   { 
  5.     return '展示一些东西'; 
  6.   } 
  7. } 

1.3.1 其实还有另一种写法 隐式控制器

这种路由我不太常用 先来看看语法吧:

Route::controller('/user', 'UserController');

首先 使用了controller来注册路由,第一个参数是路径没新鲜的,第二个参数是控制器 但是它没有跟着方法。因为它能自动根据路径相应到方法 看看下面控制器方法的实现。

  1. class UserController extends Controller 
  2. { 
  3.   /** 
  4.    * 对应着 /user/ 路由 GET方式 
  5.    */ 
  6.   public function getIndex() 
  7.   { 
  8.     return '展示一些东西~'; 
  9.   } 
  10.   /** 
  11.    * 对应着 /user/show/{id} 路由 GET方式 
  12.    */ 
  13.   public function getShow($id) 
  14.   { 
  15.     return '此用户ID为: '.$id; 
  16.   } 
  17.   /** 
  18.    * 对应着 /user/update/{id} 路由 POST方式 
  19.    */ 
  20.   public function postUpdate($id, Requests\Request $request){ 
  21.   } 
  22. } 

这个控制器的方法开头都是HTTP请求的方式 最常用的就是GET 和 POST 后面跟的是方法名字,具体对应的路径在注释中写清楚了。

如果你想给这些路由命名的话,后面可以跟一个数组来命名:

Route::controller('/user', 'UserController',['getShow' => 'user.show']);

这样就可以给对应的方法命名了,oh funk 大K真的不喜欢这种方式,也许是没明白这样写的真谛把。

--今天关于控制器就先写这么多吧,具体逻辑实现咱还得学一些新的知识来结合使用,比如middleware啊和request还有blade模板引擎,但都不是很难~

Tags: Laravel5.1控制器

分享到: