您的位置:首页 > 编程语言 > PHP开发

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

2017-04-01 16:13 633 查看
简介:

控制器类一般放到 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 函数 class
相关文章推荐