【发布时间】:2013-12-21 04:37:40
【问题描述】:
Laravel 最酷的功能之一是,如果发生验证错误,Laravel 会预先填写表单字段。但是,如果一个页面包含more than one form,并且表单字段有same name,Laravel 会预先填写所有forms fields。
例如:
我有一个页面,我有两个表单来创建新用户或其他什么。
<h1>Create user1</h2>
{{ Form::open(array('url' => 'foo/bar')) }}
{{ Form::text('name', null) }}
{{ Form::email('email', null) }}
{{ Form::close() }}
</h1>Create user2</h1>
{{ Form::open(array('url' => 'foo/bar')) }}
{{ Form::text('name', null) }}
{{ Form::email('email', null) }}
{{ Form::close() }}
控制器
class UsersController extends BaseController
{
public function store()
{
$rules = [
'name' => 'required',
'email' => 'required'
];
$validation = Validator::make(Input::all(), $rules);
if ($validation->fails()) {
return Redirect::back()->withInput()->withErrors($validation);
}
}
}
由于我没有填写邮件,Laravel 会抛出验证错误并预先填写如下表格:
如何告诉 Laravel 不要填写第二个表单?
【问题讨论】:
-
您的界面在用户体验方面很糟糕。如果用户填写了两个表单但只点击了最后一个“添加”按钮怎么办?
-
@neoascetic ,他们不会像在实际应用中那样知道形式是不同的。
-
@neoascetic,在实际应用中,我必须使用动态信息创建表单。(基于我从表中获得的总结果)。如果我有 10 个结果,我必须创建 10 个表单,使用单个控制器功能来处理所有表单是有意义的。
-
你的结果会是某种模型吗?在这种情况下最好使用
Form::model -
不是模型,但我需要用户交互。所以表格是必需的。