我在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正在加载时,该错误包在那里已经是空的。
答案 0 :(得分:1)
在控制器中尝试此操作,假设该函数已创建
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。 刀片 然后,您可以通过这种方式检查错误
@if($errors->has('fieldName'))
<small class="text-danger form-text">{{$errors->first('fieldName')}}</small>
@endif
答案 1 :(得分:0)
将routes / web.php中的所有内容包装为“ Route :: group(['middleware'=> ['web']]],函数(){”解决了该问题。
我认为web.php文件中的所有内容都已分配给“ WEB”中间件...