Laravel 4 Form::open 设置动作
Posted
技术标签:
【中文标题】Laravel 4 Form::open 设置动作【英文标题】:Laravel 4 Form::open set action 【发布时间】:2013-03-05 05:22:33 【问题描述】:我目前正在试用 Laravel 4,并创建了一个资源控制器。在“编辑”功能中,我正在构建一个表单,该表单应该发布到“更新”功能。
为了创建表单打开标签,我使用了最近添加到 Laravel 4 中的 Form::open()
函数。
但是当我只是做Form::open()
时,表单的动作是当前的url,我不知道如何改变动作。
我尝试了Form::open('clients/' . $client->id)
,但这给了我以下错误:
ErrorException:可捕获的致命错误:传递给 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])
但是当我这样做时,表单打开标记根本没有任何动作。
那么,有人知道如何设置表单动作吗?使用命名路由是完美的,但即使能够设置动作也很好。
【问题讨论】:
【参考方案1】:您可以使用命名路由、控制器动作或简单的 url 来设置表单动作。
通过命名路由设置它:
Form::open(array('route' => array('route_name', $client->id)))
通过控制器操作设置它:
Form::open(array('action' => array('ClientController@update', $client->id)))
所以关键字action
并不是指form标签的'action'参数,而是指controller action
你也可以像这样使用纯 URL:
Form::open(array('url' => 'someurl'))
【讨论】:
自己设置表单动作怎么样? 基本,确保路由在 routes.php 中命名: Form::open(array('route' => 'route_name')) 【参考方案2】:@jeffrey_way 发布了关于改进 Laravel 4 中新的 FormBuilder 的推文。下面的粘贴桶链接应该会有所帮助。它似乎更多地是关于 RESTful 控制器,但相关性。
Form action sensible defaults - paste bucket
我以为我读到了一些关于他明天将推出 Forms 教程的信息。如果是这样,它可能在这里找到net.tutsplus.com/?s=laravel
【讨论】:
以上是关于Laravel 4 Form::open 设置动作的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Blade 模板 Form::open() 到 Html