[李景山php]每天laravel[025]-laravel 基础知识 --- 控制器
2017-04-01 16:13
633 查看
简介:
控制器类一般放到 app/Http/Controllers 目录下:
1 基础控制器:
快速创建控制器:
// 控制器方法呈现
更推荐写法:
需要在路由里面配合的控制器。
此时 路由会把 $id 传递到后台处理函数 showProfile 里面。
注意:上述 控制器,会自动加载到 命名 空间 App\Http\Controllers\UserController 这个下面。
2 路由别名 及 URL生产
通过 方法生成 url 地址
获取当前的控制器
3 Controller Middleware 控制器中间件
指定中间件给对应的控制器,有两种方案
4 RESTful 资源控制器
6 依赖注入 & 控制器
7 路由缓存
就是两条命令
控制器类一般放到 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]每天laravel[025]-laravel 基础知识 --- 中间件
- [李景山php]每天laravel[024]-laravel 基础知识 --- 路由
- [李景山php]每天laravel[028]-laravel 基础知识 --- 响应
- [李景山php]每天laravel[022]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---Task 任务处理控制器--显示主页
- [李景山php]每天laravel[035]-laravel 基础知识 --- Eloquent 模型之关系映射
- [李景山php]每天laravel[029]-laravel 基础知识 --- 视图
- [李景山php]每天laravel[033]-laravel 基础知识 --- 数据库
- [李景山php]每天laravel[030]-laravel 基础知识 --- blade模版
- [李景山php]每天laravel[031]-laravel 基础知识 --- 服务容器
- [李景山php]每天laravel[021]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---Task 任务处理控制器
- [李景山php]每天laravel[034]-laravel 基础知识 --- 数据迁移及填充
- [李景山php]每天laravel[032]-laravel 基础知识 --- Contract 及 Facade
- [李景山php]每天laravel[027]-laravel 基础知识 --- 请求
- [李景山php]每天laravel[023]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---主页,亲爱的,我回来了!!
- [李景山php]每天laravel[019]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---路由
- [李景山php]每天laravel[018]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---准备关系模型
- [李景山php]每天laravel[023]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---在主页上添加数据
- [李景山php]每天laravel[023]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---删除数据
- [李景山php]每天laravel[023]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---登录,该死的登录
- [李景山php]每天laravel[017]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---准备数据库