代码改变世界

每天laravel[026]-laravel 基础知识 --- 控制器

2017-06-03 14:54  吃饱了才能撑着  阅读(88)  评论(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 这个下面。
 
路由别名 及 URL生产 
 
Route::get('foo',['uses' => 'FooController@method','as'=>'name']);  // 注意此处 是 uses .
 
$url = route('name'); // 通过 路由别名 生成对应的 url 地址
 
通过 方法生成 url 地址
$url = action('FooController@method');
获取当前的控制器
$action = Route::currentAction();
 
 
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']]);
          }
     }
 
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.1 构造器注入 
     6.2 方法注入
 
路由缓存
     就是两条命令
 
     php artisan route:cache
 
     php artisan route:clear 
 
php初学者---千锋php课堂笔记