Laravel / Blade - 是否可以将变量回显到函数的参数中?

时间:2015-05-13 12:28:12

标签: php laravel laravel-5 blade

我想在创建和更新表单中使用相同的表单代码。我正在使用Laravel的Form Helper中的以下Blade功能:

{!! Form::model($MyObject, ['action' => '{{ $action }}']) !!}

如果您看到我在{{ $action }}参数中回显action,那么它可以是动态的。但是拉拉维尔抛出了

  

UrlGenerator.php第561行中的ErrorException:

     

Action App \ Http \ Controllers \<?php echo e($ action); ?>没有定义的。 (查看:> /path/to/project/folder/resources/views/baz.blade.php)

每当我这样做时

错误。如果我尝试执行以下操作:

{!! Form::model($MyObject, ['action' => $action]) !!}

然后输出的Form标签如下所示:

<form method="POST" action="http://mysite.app/mycontroller/%7Bmycontroller%7D" accept-charset="UTF-8">

提交表单会抛出MethodNotAllowed。

这是我的控制器功能的设置方式:

public function create()
{
    $view_data = [
        'type'      => 'Create',
        'action'    => 'MyController@create',
        'my_object' => new MyObject
    ];

    return view('myviews.form', $view_data);
}

public function edit($id)
{
    $view_data = [
        'type'      => 'Edit',
        'action'    => 'MyController@update',
        'my_object' => MyObject::find($id)
    ];

    return view('myviews.form', $view_data);
}

但是Laravel只会抛出错误。我找不到任何方法将变量传递给Blade标记中的参数。这样的事情有可能吗?

1 个答案:

答案 0 :(得分:1)

直接使用变量:

{!! Form::model($MyObject, ['action' => $action]) !!}