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

Post 方法在 Laravel 中不起作用

Laravel 4 - CSRF 令牌永远不会改变

MethodNotAllowedHttpException laravel-4

在 Laravel 4 中重定向回时保留表单值

Laravel 4.2输入文件空