FormRequest не генерирует сообщения об ошибках - PullRequest
0 голосов
/ 18 января 2020

Когда проверка не проходит, я ничего не получаю в переменной $errors, она работала, но теперь она остановилась, и я понятия не имею, почему.

Я перепробовал несколько вещей, изменил ошибочные поля, сделал запрос в разных методах запроса, я прокомментировал разные методы в запросе и ничего. Я исключил метод из промежуточного программного обеспечения, которое я использую (Просмотреть промежуточное программное обеспечение composer), и ничего. Есть идеи, что происходит?

Важным примечанием является то, что представление create одинаково для редакции. Когда он «создает» сообщение, обращается к методу store, который использует родительский запрос PostRequest, и все работает отлично, заполняется переменная $ 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')
        ];
    }
}

1 Ответ

0 голосов
/ 19 января 2020

Я обнаружил проблему, в некоторых версиях laravel 6 SESSION_DRIVER имеет значение cookie вместо file в config/session.php. Изменение этого значения на file решило проблему.

...