我正在尝试使用Laravel 4,我已经创建了一个资源控制器。在“编辑”功能中,我正在构建一个表单,该表单应该发布到“更新”功能。
要创建表单打开标记,我使用最近添加到Laravel 4的Form::open()
函数。
但是,当我只做Form::open()
时,表单的操作是当前的URL,我无法弄清楚如何更改操作。
我尝试了Form::open('clients/' . $client->id)
,但这给了我以下错误:
ErrorException:Catchable Fatal Error:传递给Illuminate \ Html \ FormBuilder :: open()的参数1必须是数组类型
所以我尝试了Form::open('[clients/' . $client->id)
。这不会产生错误,但现在表单打开标记是:
<form method="POST" action="http://boekhouding.dev/clients/1/edit" accept-charset="UTF-8" clients/1="clients/1">
我也尝试过这样:Form::open(['action' => 'clients/' . $client->id])
但是当我这样做的时候,表单打开标签完全没有动作。
那么,有没有人知道如何设置表单操作?使用命名路线是完美的,但即使能够设置动作也会很好。
答案 0 :(得分:8)
您可以使用命名路由,控制器操作或简单网址来设置表单操作。
通过命名路由使用它来设置:
{{ Form::open(array('route' => array('route_name', $client->id))) }}
要通过控制器操作设置它:
{{ Form::open(array('action' => array('ClientController@update', $client->id))) }}
因此关键字action
不会影响表单标记的“action”参数,而是控制器操作
你也可以使用这样的普通网址:
{{ Form::open(array('url' => 'someurl')) }}
答案 1 :(得分:1)
@jeffrey_way在推特上发布了有关改进Laravel 4中新的FormBuilder的信息。以下粘贴存储桶链接应该有所帮助。它似乎更多是关于RESTful控制器,但相关。
Form action sensible defaults - paste bucket
我想我明天会读到一些关于他的表格教程。如果是这样,可以在此处找到net.tutsplus.com/?s=laravel