2016-01-21 76 views
0

我想从表单对象调用控制器方法来增加给定的项目。Laravel窗体动作参数

问题是,当添加参数时,表单动作将添加问号而不是斜杠。

<form method="POST" action="http://localhost/admin/pages?1"> 

我该如何定义参数?

{!! Form::open([ 
    'action'=>['Admin\\[email protected]', $item->id], 
    'style' => 'display:inline' 
]) !!} 
    {!! Form::submit('Move Up', ['class' => 'btn btn-danger btn-xs']) !!} 
{!! Form::close() !!} 
+0

您是否试过'Admin \ PagesController @ increment'? – user2094178

回答

1

在您的代码示例中,您将发送项目标识作为HTTP GET参数。您可以通过给参数指定一个名称来访问控制器中的项目ID,如下所示。

{!! Form::open([ 
    'action'=>['Admin\\[email protected]','itemId='.$item->id], 
    'style' => 'display:inline' 
]) !!} 

然后通过

Input:get('itemId') 
+0

使用第一个选项我得到这个错误:Action App \ Http \ Controllers \/admin/pages/<?php echo e($ item-> id); ?>未定义 第二个选项给了我一个ErrorException:数组到字符串的转换 – Zalon

+1

@Zalon看来你不能传递带有post请求的参数。所以你需要选择第二种方法。我编辑了代码。参考这个答案: http://stackoverflow.com/questions/31872422/laravel-post-route-with-url-parameters/31873302#31873302 – madawa

+0

我玩了一下,我最终得到它的工作,通过使用:'url'=> ['admin/pages /'。item item-> id。'/ increment'],而不是动作。非常感谢你的帮助 – Zalon

0

你的功能shhould访问项目的ID在你的控制器看起来像这样

public function increment($id) 
    { 
     //your code; 
    } 

而且你的路线应该有ID在它与POST请求

Route::post('increment/{id}','[email protected]');