我的视图刀片是这样的:
@foreach($reviews as $key => $review)
...
<div class="form-group">
{!! Form::open(['route' => 'message.review.update', 'method' => 'post', 'id' => 'reviewform']) !!}
<label for="review" class="sr-only">Review</label>
{!! Form::textarea('review', null, ['class' => 'form-control', 'id' => 'review', 'rows'=>3,'required'=>'required']) !!}
@if ($errors->has('review'))
<span class="help-block">
<strong>{{ $errors->first('review') }}</strong>
</span>
@endif
{!! Form::hidden('id', $review->_id) !!}
{!! Form::hidden('store', $review->store_id) !!}
{!! Form::close() !!}
</div>
...
@endforeach
我的路线是这样的:
Route::group(['prefix' => 'message','as'=>'message.'],function(){
Route::post('review/update', ['as'=>'review.update','uses'=>'ReviewController@update']);
});
我要更新的控制器是这样的:
public function update(CreateReviewRequest $request)
{
$param = $request->only('id', 'review', 'store');
...
}
在更新之前,它会调用CreateReviewRequest进行验证
我的CreateReviewRequest是这样的:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CreateReviewRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'review'=>'required|max:300'
];
}
}
当只有一个数据,我输入评论并提交时,它可以正常工作
但是,当不止一个数据时,它不起作用
存在这样的错误:
无效的表单控件,名称=&#39;评论&#39;不可专注。
我该如何解决?
答案 0 :(得分:1)
查看
{!! Form::textarea('review[]', null, ['class' => 'form-control', 'id' => 'review', 'rows'=>3,'required'=>'required']) !!}
或
<textarea name="review[]" class="form-control" id="review" rows="3" required></textarea>
您必须插入名称字段,如数组为空,当您提交表单时,您可以获取控制器中的所有值:
<强> CONTROLLER 强>
public function update(Request $request)
{
// Validate the form
$this->validate($request, [
'review' => 'required',
]);
// get inputs
$review_input = $request->get('review');
dd($review_input); // see if it work
}
答案 1 :(得分:1)
你在这里犯了一些错误......在HTML中,ID必须是唯一的。您不能将“评论”作为所有textareas的ID ...我的评论是将数组用作此name=review[]
的名称,并在ID中最后动态添加$key
使他们独特的身份。
这会给你这样的东西:
<textarea name="review[]" class="form-control" id="review0" rows="3" required></textarea>
<textarea name="review[]" class="form-control" id="review1" rows="3" required></textarea>
<textarea name="review[]" class="form-control" id="review2" rows="3" required></textarea>
修改强>
我刚刚创立了这个stackoverflow topic。您可以尝试在novalidate
中添加<form>
属性吗?
<form name="myform" novalidate>
在你的情况下是这样的:
{!! Form::open(['route' => 'message.review.update', 'method' => 'post', 'id' => 'reviewform', 'novalidate']) !!}