我已尝试过互联网上的一些解决方案,但他们正在使用不同版本的laravel。我在这里使用laravel 5.1。问题是我无法使用user says
验证动态输入。请参阅下面的代码:
控制器
$this->validate()
查看
public function postTake(Request $request){
$this->validate($request, [
'true_false' => 'required',
'multiple_choice' => 'required',
'short_answer' => 'required'
]);
}
这只会验证第一个Answer1
<input type="text" name="true_false[]"><br>
Answer2
<input type="text" name="true_false[]"><br>
Answer3
<input type="text" name="true_false[]"><br>
Answer4
<input type="text" name="true_false[]"><br>
Answer5
<input type="text" name="true_false[]"><br>
Answer6
<input type="text" name="multiple_choice[]"><br>
Answer7
<input type="text" name="short_answer[]">
输入。
这个问题还没有答案,因为我使用的是LARAVEL 5.1版本
答案 0 :(得分:1)
在我看来,
@jeuneGuerrier补充的答案并不适用于laravel 5.1
因为,在laravel 5.2及更高版本中引入了数组输入验证,因此您需要为数组输入验证创建自定义请求类。
您可以像这样制作自定义请求
php artisan make:request ArrayInputRequest
现在创建了一个文件app/Http/Requests/ArrayInputRequest.php
,您必须添加验证逻辑。
您的ArrayInputRequest.php
看起来应该是这样的,
public function authorize()
{
return true;
}
public function rules()
{
$rules = [
'true_false' => 'required',
'multiple_choice' => 'required',
'short_answer' => 'required',
];
foreach($this->request->get('true_false') as $key => $val)
{
$rules['true_false.'.$key] = 'required';
}
foreach($this->request->get('multiple_choice') as $key => $val)
{
$rules['multiple_choice.'.$key] = 'required';
}
foreach($this->request->get('short_answer') as $key => $val)
{
$rules['short_answer.'.$key] = 'required';
}
return $rules;
}
public function messages()
{
// Write error messages here
}
现在,你的控制器功能应该是,
public function postTake(ArrayInputRequest $request){
}
我希望你能理解。
答案 1 :(得分:0)
我没有完整地提出你的问题,但我认为这就是你要找的东西
$this->validate($request, [
'true_false' => 'required|array',
'true_false.*' => 'required|boolean',
'multiple_choice' => 'required|array',
'multiple_choice.*' => 'required|boolean',
'short_answer' => 'required|array',
'short_answer.*' => 'required|boolean',
]);
抱歉5.1不支持数组输入你做了类似的事情
$rules = [
'true_false' => 'required|max:255',
];
foreach($this->request->get('true_false') as $key => $val)
{
$rules['true_false.'.$key] = 'required';
}
return $rules;