laravvel 控制器基本使用
创建普通控制器
php artisan make:controller admin/ArticlesController
控制器的命名空间
在使用路由是注意控制器的命名空间
Route::get('/admin/article/index', 'adminArticlesController@index');
创建资源控制器
php artisan make:controller admin/ArticlesController -r
php artisan make:controller admin/ArticlesController --resource
部分资源控制器
在声明资源路由时, 如果只需要一部分方法, 就可以使用部分资源路由
// 指定需要的方法
Route::resource('/admin/user', 'adminUserController', [
'only' => ['create', 'store', 'index'],
]);
// 指定不需要的方法
Route::resource('/admin/user', 'adminUserController', [
'except' => ['create', 'store', 'destroy'],
]);
补充资源控制器
如果资源控制器默认生成的方法,不足以完成某个功能,还需要添加方法
补充方法的访问路由,一定要定义到资源路由前面,否则可能会被覆盖
Route::get('/user/upload', 'UesrController@upload_form');
Route::post('/user/upload', 'UesrController@upload_file');
Route::resource('/user', 'UserController');
依赖注入
访问路由
Route::get('/article/{articleId}', 'ArticleController@index');
依赖注入的方式
- 构造方法
- 成员方法
构造方法注入
namespace AppHttpControllers;
use AppArticle;
class ArticleController extends Controller {
protected $article;
public function __construct(Article $article){
$this->article = $article;
}
public function index(){
dump($this->article);
}
}
成员方法注入
namespace AppHttpControllers;
use AppArticle;
class ArticleController extends Controller {
public function index(Article $article) {
dump($article);
}
}
创建控制器自动注入模型对象
php artisan make:controller ArticlesController --model=Article