【问题标题】:FormRequest not generating error messagesFormRequest 不生成错误消息
【发布时间】: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


    【解决方案1】:

    我发现了问题,某些版本的 laravel 6 将 SESSION_DRIVER 设置为 cookie 而不是 fileconfig/session.php。将其更改为 file 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 2013-06-30
      • 2015-09-01
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      相关资源
      最近更新 更多