这个问题在这里已有答案:
我已尝试过互联网上的一些解决方案,但他们正在使用不同版本的laravel。我在这里使用laravel 5.1。问题是我无法使用$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[]">
这只会验证第一个true_false[]
输入。
这个问题还没有答案,因为我正在使用LARAVEL 5.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){
}
我希望你能理解。
我没有完全得到你的问题,但我认为这是你正在寻找的
$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;