[李景山php]每天laravel[025]-laravel 基础知识 --- 控制器

47 篇文章 0 订阅

简介:

控制器类一般放到 app/Http/Controllers 目录下:

1 基础控制器:

快速创建控制器:

php artisan make:controler PhotoController

// 控制器方法呈现

public function showProfile($id){
     return view();
}

更推荐写法:

public function showProfile(Request $requst, $id){
     return view();
}

需要在路由里面配合的控制器。

Route::get('user/{id}','UserController@showProfile');

此时 路由会把 $id 传递到后台处理函数 showProfile 里面。

注意:上述 控制器,会自动加载到 命名 空间 App\Http\Controllers\UserController 这个下面。

2 路由别名 及 URL生产

Route::get('foo',['uses' => 'FooController@method','as'=>'name']);  // 注意此处 是 uses .

$url = route('name'); // 通过 路由别名 生成对应的 url 地址

通过 方法生成 url 地址

$url = action('FooController@method');

获取当前的控制器

$action = Route::currentAction();

3 Controller Middleware 控制器中间件
指定中间件给对应的控制器,有两种方案

 方案一:路由中指定。
          Route::get('profile',[
               'middleware' => 'auth',
               'uses' => 'UserController@showProfile'
          ]);
 方案二:控制器中指定。
     class UserController extends Controller{
          public function __contruct(){
               $this->middleware('auth');
               $this->middleware('log',['only'=>['fooAction','barAction']]);
               $this->middleware('subscribed',['expect'=>['fooAction','barAction']]);
          }
     }

4 RESTful 资源控制器

 4.1 创建 控制器
     php artisan make:controller PhotoController
 4.2 设置路由资源
          Route::resource('photo','PhotoController');
 默认的映射关系:
Verb    
Path                                   
Action              
Route Name
GET      
/photo
index  
photo.index
GET      
/photo/create  
create
photo.create
POST
/photo
store
photo.store
GET
/photo/{photo}
show
photo.show
GET
/photo/{photo}/edit
edit
photo.edit
PUT/PATCH
/photo/{photo}
update
photo.update
DELETE
/photo/{photo}
destroy
photo.destroy
 4.3 局部资源路由
          Route::resource('photo','PhotoController',['only'=>['index','show']]);

          Route::resource('photo','PhotoController',['except'=>['create','store','update','destroy']]);
 4.4 命名资源路由
          Route::resource('photo',;PhotoController',['names'=>['create'=>'photo.build']]);   
  4.5 嵌套资源
           Route::resource('photos.commonts','PhotoCommentController');
       访问方式: photos/{photos}/comments/{comments}

       使用方式:
           class PhotoCommentController extends Controller{
               public function show($photoId,$commentId){
                    //TODO
               }
          }   
 4.6 扩展资源路由
      就是在已经有的路由基础上,重新扩展一下,路由,如下:
          Route::get('photos/popular','PhotoController@method');
          Route::resource('photos','PhotoController');
 5 隐式控制器

      定义方法:  使用 Route::controller() 方法
           Route::controller('users','UserController');
      使用方式: 只需要对应的方法名字以这些方法响应的HTTP动词开头,然后是首字母大写的URI名称。

      例如:
      响应 GET 方式的 /users 的请求  =>  public function getIndex(){}

      响应 GET 方式 /users/show/1 的请求 =》 public function getShow($id){}

      响应 GET 方式 /users/admin-profile 的GET 请求 public function getAdminProfile()


      统一对于隐式控制器,也可以指定对应的 路由名称:

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

6 依赖注入 & 控制器

 6.1 构造器注入 
 6.2 方法注入

7 路由缓存
就是两条命令

     php artisan route:cache

     php artisan route:clear 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值