Laravel - требует проверки ошибок на перенаправление - PullRequest
0 голосов
/ 02 января 2019

У меня есть пользовательский файл запроса в http/requests, который обрабатывает проверку.

Если проверка не проходит, по умолчанию он должен перенаправить обратно с $errors в представлении (которое\Illuminate\View\Middleware\ShareErrorsFromSession::class), и я вижу, что во время отладки возникают ошибки в сеансе, но после того, как этот запрос с кодом 302 завершается и генерируется запрос 200, ошибки в сеансе теряются.

Что может вызвать эту проблему?Спасибо

Код:

<?php

namespace App\Http\Requests;
<..>
class AnswerQuestionnaireRequest extends FormRequest
{
    private $questionRepository;

    /**
     * AnswerQuestionnaireRequest constructor.
     */
    public function __construct(QuestionRepository $qs)
    {
        parent::__construct();
        $this->questionRepository = $qs;
    }

    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        $rules = [];
        foreach ($this->questionRepository->getAll() as $question){
            $index = "question-" . $question->id;
            $rules[$index] = "required|in:1,2";
        }

        return $rules;

    }

    public function messages()
    {
        return [
            'question-1.required' => __("Incorrect value"),
            'question-2.required'  => __("Incorrect value"),
        ];
    }

}


class QuestionnairesController extends Controller
{

    public function __construct(QuestionnairesService $questionnairesService, QuestionRepository $questionRepository)
    {
        $this->questionnairesService = $questionnairesService;
        $this->questionRepository = $questionRepository;
    }

    public function show(Request $request){
        $questions = $this->questionRepository->getAll();
        return view("client/questionnaire", compact("questions"));
    }

    public function store(AnswerQuestionnaireRequest $request){
        var_dump($request);
    }

РЕДАКТИРОВАТЬ: Проверяя с помощью Xdebug, вы можете видеть, что проверка работала, но только для запроса, код возврата 302 и перенаправляет обратно.https://gyazo.com/231c83910f6e57748e1b705ade74e383 И когда загружается запрос 200, эта сумка ошибок уже пуста.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Оборачивание всего в маршрутах / web.php в "Route :: group (['middleware' => ['web']], function () {" решило проблему.

Я думал, что всев файле web.php уже назначено промежуточному программному обеспечению "WEB" ...

0 голосов
/ 02 января 2019

В вашем контроллере попробуйте это, предполагая, что функция create

use Illuminate\Http\Request;
public function create(Request $request){
    $this->validate($request,[
    'field'=>'required|present',
    'another_field'=>'required|present',
    ]);
   Post::create($request);
}

Обратите внимание, что $ this-> validate (), если есть ошибка проверки, она автоматически перенаправляется обратно на предыдущий URLс сообщениями об ошибках отправлено. Blade Вы можете проверить ошибки следующим образом

@if($errors->has('fieldName'))
    <small class="text-danger form-text">{{$errors->first('fieldName')}}</small>
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...