【问题标题】:Laravel 4 Form::open set actionLaravel 4 Form::open 设置动作
【发布时间】: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]) 但是当我这样做时,表单打开标记根本没有任何动作。

那么,有人知道如何设置表单动作吗?使用命名路由是完美的,但即使能够设置动作也很好。

【问题讨论】:

    标签: php action laravel forms laravel-4


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 2019-02-28
      • 2013-03-14
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 2015-10-19
      相关资源
      最近更新 更多