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

吾爱主题 阅读:103 2021-09-26 13:34:00 评论:0

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

为什么要使用控制器

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

1 如何创建一个控制器

1.1.1 创建RESTful控制器

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

?
1 php artisan make:controller Admin\\HomeController

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

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

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

1.1.2 实现RESTful路由

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

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

?
1 php artisan route:list

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

1.2.1 普通控制器

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

?
1 php artisan make:controller UserController --plain

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

1.2.2 单条路由使用控制器

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

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

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

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

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

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

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

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

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

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

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

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

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

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

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

原文链接:https://www.cnblogs.com/sun-kang/p/7295899.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容