php - Laravel - 在重定向时请求验证松散错误
问题描述
我有一个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正在加载时,这个错误包已经是空的了。
解决方案
在你的控制器中试试这个,假设函数是创建的
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
推荐阅读
- webpack - Unable to load CSS with filter: filter:progid:DXImageTransform.Microsoft.BasicI
- python - Divide the dataframe1 column values with another dataframe column value
- haskell - Check if two Haskell functions are equal with regards to non-termination or errors
- html - Select Dropdown values based on input in textfield
- angular - mat-ink-bar location not update when container resizes
- java - 在方法 average() 中操作方法 sum()
- node.js - 通过函数结果设置对象键值
- java - 如何更新 ArrayList 中类实例的值
- php - MongoDB + PHP:过滤已解析的用户输入是否安全?
- python - 如何将请求的密码更改为名为`salt`和`pwdhash`的两个参数并将其保存到django中的数据库?