Laravel 4:链接到毁灭方法

时间:2014-09-26 00:02:35

标签: laravel-4 laravel-routing

当您只是链接到控制器的@destroy方法时,有没有办法将方法更改为DELETE?

以下不起作用:

$s = '<a href="'.action('CollegeController@destroy', $college->getId()).'" class="glyphicon glyphicon-trash"></a>';

现在,如果我使用@edit方法执行此操作,它会转到相应的方法,因为edit使用GET。我假设这与路由有关,但我不太清楚如何去做,但还没有找到明确的答案。

2 个答案:

答案 0 :(得分:2)

如果您正在使用资源丰富的路由并希望在控制器中访问DELETE方法,则需要使用表单。

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

将打开一个Laravel表单并包含一个名为_method的隐藏字段,其值为DELETE - 这将触发您寻找的删除方法。

答案 1 :(得分: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'=&gt;'btn btn-danger'])}}

创建一个名为macro.php的文件,并将其包含在引导程序文件中