• Laravel5.1 -控制器(初步了解)


    首先道个歉 这篇笔记是前两天就应该写的,可大K有点事儿要忙 就耽误了,今天抽空学了学控制器,并写个笔记分享下。

    为什么要使用控制器

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


     1 如何创建一个控制器

    1.1.1 创建RESTful控制器

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

    php artisan make:controller Admin\HomeController

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

    class HomeController extends Controller
    {
        /**
         * Display a listing of the resource.
         *
         * @return IlluminateHttpResponse
         */
        public function index()
        {
            
        }
    
        /**
         * Show the form for creating a new resource.
         *
         * @return IlluminateHttpResponse
         */
        public function create()
        {
            //
        }
    
        /**
         * Store a newly created resource in storage.
         *
         * @param  IlluminateHttpRequest  $request
         * @return IlluminateHttpResponse
         */
        public function store(Request $request)
        {
            //
        }
    
        /**
         * Display the specified resource.
         *
         * @param  int  $id
         * @return IlluminateHttpResponse
         */
        public function show($id)
        {
            //
        }
    
        /**
         * Show the form for editing the specified resource.
         *
         * @param  int  $id
         * @return IlluminateHttpResponse
         */
        public function edit($id)
        {
            //
        }
    
        /**
         * Update the specified resource in storage.
         *
         * @param  IlluminateHttpRequest  $request
         * @param  int  $id
         * @return IlluminateHttpResponse
         */
        public function update(Request $request, $id)
        {
            //
        }
    
        /**
         * Remove the specified resource from storage.
         *
         * @param  int  $id
         * @return IlluminateHttpResponse
         */
        public function destroy($id)
        {
            //
        }
    }

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

    1.1.2 实现RESTful路由

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

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

    php artisan route:list

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

    1.2.1 普通控制器

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

    php artisan make:controller UserController --plain

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

    1.2.2 单条路由使用控制器

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

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

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

    class UserController extends Controller
    {
        public function index()
        {
            return '展示一些东西';
        }
    }

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

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

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

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

    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, RequestsRequest $request){
    
        }
    }

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

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

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

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

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

  • 相关阅读:
    day⑥:logging模块
    day⑥:shelve模块
    day⑥:xml模块
    day⑤:冒泡排序
    day⑤:模块
    day⑤:re深入
    day④:递归
    day④:迭代器
    day④:装饰器
    day③:函数式编程
  • 原文地址:https://www.cnblogs.com/sun-kang/p/7295899.html
Copyright © 2020-2023  润新知