2014-06-24 95 views
1

對不起,如果這是一個愚蠢的問題。我對laravel/MVC非常陌生,今天的咖啡也不夠多,所以如果答案就在我面前,我不會感到驚訝。 :)Laravel 4.1 - 將表單<select>的資源ID傳遞給控制器​​方法?

背景:我有一個選擇的形式。該表單用於從數據庫中刪除「用戶」及其所有關聯資源。 <select>填充了唯一的ID。在表單提交時,我想向我的Controller類發送一個DELETE請求,傳入所選的ID以刪除。

我無法弄清楚如何將select中的ID傳入表單。我如何做到這一點,以便當您在下拉列表中選擇(例如)ID 1時,該表單會傳遞到我的資源路由中?

下面是一些代碼:

{{ Form::open(array(
    'url' =>'/clients', 
    'method'=>'delete', 
    'name' =>'delClient', 
    'role' =>'form', 
    'class' =>'form-horizontal')) }} 

<h4>Please select the client you would like to delete:</h4> 

    {{ 
    Form::selectField('delClientSelect', 'Client: ', array(
     0=>'-- Select Client --')+$clientsList) 
    }} 

    {{ 
     Form::submit('Delete Selected', array(
     'class' => 'btn btn-danger confDelClient', 
     'data-role'=> 'delete' 
    )) 
    }}  
{{ Form::close() }} 

一切我看了網上說,你通過ID到表單'url'屬性,即:

{{ 
Form::open(array('url'=>'/clients/{id}')) 
}} 

但是,作爲ID從<select>未來,我不確定將ID傳入我的路由的正確方法是什麼。

感謝您的幫助!

回答

2

如果您使用的資源控制器必須使用動詞DELETE來刪除記錄,那麼我會使用jQuery將表單URL /動作更新爲'url'=>'/clients/{id}',正如您所述。
基本上,在表單提交上(使用jQuery即$('form').submit()),您可以將選擇字段的ID附加到表單url/action。

如果不使用資源控制,我會使用POST方法,使用Input::all()Input::get()抓住從選擇的ID,然後讓你的數據庫調用從數據庫中刪除記錄。

+0

我正在使用資源控制器,對不起,如果我沒有說清楚。 :)我知道我可以附加ID與jQuery,但我不覺得這是最好的做法,有沒有辦法由Laravel做到這一點?感謝您的幫助。 – Prefix

+0

通常情況下,您正在使用資源控制器來處理1個資源(您的情況爲1個用戶)。每條路線(存儲,創建,顯示,編輯等)都會處理一個資源。我會說有一個選擇字段來選擇一個用戶刪除並不真的遵循這種做法。 通常,您有一個顯示頁面來顯示1個用戶。在該頁面上,您將擁有一條刪除鏈接,其中包含銷燬/刪除操作的路由。 –

+0

我看到了 - 我仍然只操作一個用戶,您只需選擇哪個用戶;這是否不遵循這種做法?你認爲在這種情況下,使用普通的POST和編寫我自己的方法而不是依賴資源控制器默認值會更好嗎?謝謝! – Prefix

相關問題