# 控制器
### 单个行为控制器
- 如果你想定义一个只处理单个行为的控制器,你可以在控制器中放置一个`__invoke`方法:
- 当注册单个行为控制器的路由时,无需指明方法:
- 控制器下面只有一个 `__invoke`方法:
```
<pre class="calibre11">```
Route::get('user/{id}', 'ShowProfile');
```
```
## 控制器中间件
Middleware 可以在路由文件中分配给控制器的路由。
```
<pre class="calibre11">```
Route::get('profile', 'UserController@show')->middleware('auth');
```
```
在控制器构造函数中使用`middleware`方法
```
<pre class="calibre11">```
class UserController extends Controller{
/**
* Instantiate a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
$this->middleware('log')->only('index');
$this->middleware('subscribed')->except('store');
}
}
```
```
控制器还允许您使用一个闭包注册中间件
```
<pre class="calibre11">```
$this->middleware(function ($request, $next) {
// ...
return $next($request);});
```
```
## 资源控制器
使用 Artisan 命令`make:controller`, 可以快速创建这样一个控制器:
```
<pre class="calibre11">```
php artisan make:controller PhotoController --resource
```
```
这个命令会生成一个控制器`app/Http/Controllers/PhotoController.php`。
#### 指定资源模型
如果你使用了路由模型绑定,并且想在资源控制器的方法中使用类型提示,你可以在生成控制器的时候使用 `--model`选项:
```
<pre class="calibre11">```
php artisan make:controller PhotoController --resource --model=Photo
```
```
### 部分资源路由
声明资源路由时,你可以指定控制器应该处理的部分行为,而不是所有默认的行为:
```
<pre class="calibre11">```
Route::resource('photos', 'PhotoController')->only([
'index', 'show'
]);
Route::resource('photos', 'PhotoController')->except([
'create', 'store', 'update', 'destroy'
]);
```
```
#### API 资源路由
当声明用于 APIs 的资源路由时,通常需要排除显示 HTML 模板的路由, 如 `create` 和 `edit`。 为了方便起见,你可以使用`apiResource` 方法自动排除这两个路由:
```
<pre class="calibre11">```
Route::apiResource('photos', 'PhotoController');
```
```
你可以通过传递一个数组给`apiResources`方法的方式来一次性注册多个 API 资源控制器:
```
<pre class="calibre11">```
Route::apiResources([
'photos' => 'PhotoController',
'posts' => 'PostController'
]);
```
```
为了快速生成一个不包含 `create` 和 `edit` 方法的 API 资源控制器,可以在执行`make:controller`命令时加上 `--api`选项:
```
<pre class="calibre11">```
php artisan make:controller API/PhotoController --api
```
```
### 命名资源路由
默认情况下,所有资源控制器操作都有一个路由名称;但是,是可以通过用选项传递一个 `names` 数组来覆盖这些名称:
```
<pre class="calibre11">```
Route::resource('photos', 'PhotoController')->names([
'create' => 'photos.build'
]);
```
```
### 命名资源路由参数
默认情况下, `Route::resource` 会根据资源名称的 「单数」 形式创建资源路由的路由参数。你可以在选项数组中传入`parameters` 参数来轻松地覆盖每个资源。 `parameters` 数组应当是一个资源名称和参数名称的关联数组:
```
<pre class="calibre11">```
Route::resource('users', 'AdminUserController')->parameters([
'users' => 'admin_user'
]);
```
```
上列将会为资源的 `show`路由生成如下的 URl :
```
<pre class="calibre16">```
/users/{admin_user}
```
```
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图