2014-09-26 101 views
0

當你簡單地鏈接到控制器的@destroy方法時,是否有任何方法可以將方法更改爲DELETE?Laravel 4:鏈接到銷燬方法

下不起作用:

$s = '<a href="'.action('[email protected]', $college->getId()).'" class="glyphicon glyphicon-trash"></a>'; 

現在,如果我這樣做與@edit方法需要我給適當的方法,因爲編輯使用GET。我假設這與路由有關,但我不太清楚如何去做,還沒有找到明確的答案。

+2

它是不明智地使用GET請求對資源進行任何修改,刪除其中的一個。根據HTTP ref:*約定已經確定GET和HEAD方法不應該具有除檢索以外的其他操作的意義* - http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html – 2014-09-26 09:49:28

回答

2

如果您使用資源豐富的路由並希望訪問控制器中的DELETE方法,則需要使用表單。

echo Form::open(array('url' => 'foo/bar', 'method' => 'delete'))

將打開一個Laravel形式,並且包括一個隱藏字段名爲_methodDELETE值 - 這將觸發你所尋求的刪除方法。

+1

正確的是,我想知道我應該如何改變方法沒有一個窗體。謝謝。 – Ravioli87 2014-09-26 14:11:51

1

我已經在相同的情況下,你和做一些研究,我發現這個比可能會幫助你喜歡它幫了我

Form::macro('delete', function ($url, $button_label = 'Delete', $form_parameters = array(), $button_options = array()) { 

    if (empty($form_parameters)) { 
     $form_parameters = array(
      'method' => 'DELETE', 
      'class' => 'delete-form', 
      'url' => $url 
     ); 
    } else { 
     $form_parameters['url'] = $url; 
     $form_parameters['method'] = 'DELETE'; 
    }; 
    $button_options['type'] = 'submit'; 
    return Form::open($form_parameters) 
    . Form::button($button_label, $button_options) 
    . Form::close(); 
}); 

它可以在刀片模板使用此

使用{{Form :: delete('route.to.destroy.method','Button Text',['class'=>'btn btn-danger'])}}

創建一個名爲macro.php的文件,將其引入引導文件

+0

唯一的問題是我需要在控制器內調用它。據我所知,這是不可能的正確的? – Ravioli87 2014-09-26 14:05:53

+0

好吧,它所產生的HTML,所以它應該做你想做的事情。操作將始終是GET請求你嘗試使用命名路由嗎? – Ardenexal 2014-09-27 10:47:56