【发布时间】:2020-05-04 22:42:17
【问题描述】:
当验证失败时,我在 $errors 变量中什么也得不到,它曾经可以工作,但现在它停止了,我不知道为什么。
我已经尝试了几件事,更改了失败的字段,在请求的不同方法中添加了请求,我在请求中评论了不同的方法,但什么也没有。我已经从我正在使用的中间件(查看作曲家中间件)中排除了该方法,什么也没有。知道发生了什么吗?
重要的一点是,创建视图与版本相同。当它“创建”一个帖子时,点击使用父请求 PostRequest 的 store 方法,并且一切正常,$errors 变量被填充。
一些代码。
我的帖子路由文件:
Route::resource('posts', 'PostController');
RouteServiceProvider 方法,其中我明确包含了web 中间件:
protected function mapPostsRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/posts.php'));
}
我在更新方法中使用我的自定义表单请求,PostController:
/**
* @param PostUpdateRequest $request
* @param Post $post
* @return Factory|RedirectResponse|View
*/
public function update(PostUpdateRequest $request, Post $post)
{
// and so on
我的孩子PostUpdateRequest 提出更新请求:
<?php
namespace App\Http\Requests;
use Illuminate\Validation\Rule;
class PostUpdateRequest extends PostRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return array_merge(
parent::rules(), [
'slug' => [
'required', 'string',
Rule::unique('posts', 'slug')->ignore($this->slug, 'slug')
],
]);
}
}
它的父亲PostRequest
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
class PostRequest extends FormRequest
{
protected function prepareForValidation()
{
$this->merge([
'slug' => Str::slug($this->title),
]);
}
/**
* @return array
*/
public function rules()
{
return [
'title' => 'required|string',
'content' => 'string|required|',
'status' => 'required|string',
'attachmentvalue' => 'string',
'slug' => [
'required',
'string',
'min:2',
Rule::unique('posts', 'slug')
],
];
}
/**
* @return array
*/
public function messages()
{
return array_merge(
parent::messages(),
[
'title.required' => __('El título es obligatorio'),
'content.required' => __('El artículo debe poseer un contenido'),
'slug.string' => __('Ya hay un artículo con ese título'),
'attachmentvalue.string' => __('El artículo debe contener una imagen estacada'),
]
);
}
/**
* @return array
*/
public function attributes()
{
return [
'title' => __('Título'),
'content' => __('Contenido'),
'attachmentvalue' => __('Adjunto')
];
}
}
【问题讨论】:
标签: php laravel validation request