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]');