PHP - Laravel 控制器创建(关联路由、路由命名空间分组)

872 阅读1分钟

一、控制器创建

  • 控制器文件写到哪?

    存放文件夹:app/Http/Controllers

  • 控制器文件如何命名?

    命名:使用大驼峰,同时注意命名空间和基类控制器的引入

  • 控制器文件创建命令

    // 一遍控制器
    $ php artisan make:controller 控制器名(LoginController)
    
    // 资源控制器
    $ php artisan make:controller 控制器名(TestController) --resource
    // 可简写
    $ php artisan make:controller 控制器名(TestController) --r
    
    // 如果需要将控制器放到指定目录
    // 例如:`app/Http/Controllers/Admin`
    $ php artisan make:controller Admin/控制器名(LoginController)
    
    <?php
      
    // 命名空间
    namespace App\Http\Controllers\Admin;
    
    // 命名空间要写在 use 前面
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    
    class LoginController extends Controller
    {
        // 控制器内部方法属性
    }
    

二、定义路由访问控制器中的方法

  • 路由样式

    Route::请求方式('url', 匿名函数);
    Route::请求方式('url', '控制器名称@操作方法');
    Route::请求方式('url', '命令空间\控制器名称@操作方法');
    
  • 通过创建控制器命令,创建两个控制器

    // 创建一个登录控制器,在根目录 Controllers 中
    $ php artisan make:controller LoginController
    
    
    // 创建一个退出控制器,在 Controllers/Admin 中,Admin 文件需要手动创建
    $ php artisan make:controller Admin/LogoutController
    

  • 路由绑定控制器并调用指定方法,web.php 文件中:

    // 路由控制器 - 登录
    // 如果控制器类在 Controllers 根目录下,则不用加命令空间
    Route::get('login', 'LoginController@index') -> name('login');
    
    // 路由控制器 - 退出
    // 如果控制器类在 Controllers 根目录下面其他文件夹中,则必须加命令空间
    Route::get('logout', 'Admin\LogoutController@index') -> name('logout');
    

    注意:方法带参数跟之前一致

    // 路由控制器 - 登录
    // 如果控制器类在 Controllers 根目录下,则不用加命令空间
    Route::get('login/{username?}', 'LoginController@index') -> name('login');
    

三、路由命令空间分组

  • 以上面退出登录路由为例子
    // 路由控制器 - 退出
    // 如果控制器类在 Controllers 根目录下面其他文件夹中,则必须加命令空间
    Route::get('logout', 'Admin\LogoutController@index') -> name('logout');
    
    // 将上面路由进行命名空间分组
    Route::group(['namespace'=>'Admin'], function () {
       Route::get('logout', 'LogoutController@index') -> name('logout');
    });