【问题标题】:Laravel Passing Variable from FormsLaravel 从表单传递变量
【发布时间】:2015-03-17 17:11:27
【问题描述】:

我是 Laravel 的新手,并且正在学习超级基础教程。 但是本教程没有附带编辑记录部分,我正在尝试扩展自己。

路线:

Route::controller('admin/products', 'ProductsController');

控制器:

class ProductsController extends BaseController
{ 

public function getUpdate($id)
    {
        $product = Product::find($id);

        if ($product) {
            $product->title = Input::get('title');
            $product->save();
            return Redirect::to('admin/products/index')->with('message', 'Product Updated');
        }
        return Redirect::to('admin/products/index')->with('message', 'Invalid Product');
}

..ECT...

我意识到控制器正在请求要使用的 ID,但我不知道如何在发布/获取表单时向其传递产品 ID。

表格:

{{Form::open(array("url"=>"admin/products/update",'method' => 'get', 'files'=>true))}}
    <ul>
        <li>
            {{ Form::label('title', 'Title:') }}
            {{ Form::text('title') }}
            {{ Form::hidden('id', $product->id) }}

 ..ECT...

{{ Form::close() }}

我最初的想法是在表单 URL 中传递产品 ID,例如:

{{Form::open(array("url"=>"admin/products/update/{{product->id}}", 'files'=>true))}}

但也没有运气。

我得到的错误是:

Missing argument 1 for ProductsController::postUpdate()

有趣的是,如果我直接输入 URL:

http://localhost/laravel/public/admin/products/update/3

它可以正常工作,并且 id 为 3 的项目被修改得很好。

那么任何人都可以帮助并告诉我如何通过表单传递 id 吗?

非常感谢

【问题讨论】:

    标签: php forms laravel


    【解决方案1】:

    这里的第一个问题如下:

    {{Form::open(array("url"=>"admin/products/update/{{product->id}}", 'files'=>true))}}
    

    {{product-&gt;id}} 有两个错误:

    1. 应该是{{$product-&gt;id}}
    2. 但是它无论如何都不会工作,因为 {{Form::...}} 内部的内部 {{..}} 将无法识别,因为它位于字符串内部,因此是字符串本身的一部分.

    你要么必须这样写:

    {{Form::open(array("url"=>"admin/products/update/".$product->id, 'files'=>true))}}
    

    或者您在routes.php 文件中为您的路线命名并这样做:

    {{Form::open(array('route' => array('route.name', $product->id, 'files'=>true)))}}
    

    我更喜欢第二种方式。

    您可能还想查看Form Model Bingin

    【讨论】:

    • 太好了,感谢您的快速回复,以及逐步简单的建议。我选择尝试第一个选项,我还没有覆盖命名路由,我得到这个结果:找不到控制器方法。如果我仍然缺少明显的东西,我会标记为正确吗?谢谢
    • 该错误仅表示您尝试访问控制器没有的方法或您有一个命名空间的控制器但您没有使用其全名访问该控制器
    • 哦,没关系,我在表单中添加了 Method =>''get" (因为我的方法是 getUpdate 而不是默认帖子),一切顺利。我会阅读绑定,好电话. 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多