【问题标题】:Laravel href destroyLaravel href 销毁
【发布时间】:2016-08-09 02:28:02
【问题描述】:

我试图在不使用表单的情况下删除对象。所以我所做的就是即兴创作。我已经制定了路线:

Route::get('category/destroyMe', ['uses' => 'CategoryController@destroyMe', 'as' => 'category.destroyMe']);

在视图中,我会像这样选择类别 ID:

<a href="{{route('category.destroyMe', ['id' => $category->id])}}" ></a>

最后是控制器:

public function destroyMe()
{
    $this->destroy(Category::find(Input::get('id')));
    return redirect()->back();
}

问题: 我想知道如果没有我的辅助方法destroyMe(),是否有办法做到这一点?有没有办法通过 href 或其他方式转发method = 'DELETE',这样我就可以调用我的资源路由,如category.destroy 而无需复杂化?

编辑: 我不想用表格来做(因为我知道怎么做)。我也不想让 ajax 或一些额外的脚本或其他东西变得复杂。我想知道是否有像

这样的纯 Laravel 光滑解决方案
<a href="{{route('category.destroy', ['id' => $category->id, 'method' => 'DELETE])}}" ></a>

【问题讨论】:

  • 那个副本没有回答我的问题
  • 它至少有很多关于如何对服务器进行删除调用的建议。似乎使用表单控制器生成表单是最普及的方式
  • 确实如此,但您并不认为我的方法有效。所以我不是在寻找一个可行的解决方案,而是一个具体的解决方案:)
  • 嗯 - 那么简单的答案是:不。仅使用链接无法执行删除请求。你总是需要一个表单或 ajax。

标签: php laravel destroy


【解决方案1】:

试试这个:

<a href="{{ action('CategoryController@destroyMe', ['id' => $category->id]) }}" ></a>

和行动:

public function destroyMe($id)
{
    Category::destroy($id);
    return redirect()->back();
}

【讨论】:

  • 我猜这会创建相同的路线
  • 我想我的代码是做你想做的最简单的方法。
  • 是的,它非常漂亮,只是我需要修改路由本身以调用“destroyMe/{id}”,否则代码会中断。但是,我想使用资源销毁方法来处理它,而根本不需要创建新路由
【解决方案2】:

我有一个可以删除帖子的博客,这对我有用

<a href="{{ route('delete-post', ['post_id' => $post->id]) }}">x</a>

路由:

Route::get('delete/{post_id}', ['uses' => 'PostsController@delete', 'as' => 'delete-post']);

还有PostsController中的函数

public function delete($id) {
    Post::destroy($id);

    return redirect()->back()->with(["deleted" => "The post was deleted"]);
}

【讨论】:

    猜你喜欢
    • 2014-09-05
    • 1970-01-01
    • 2016-03-21
    • 2021-06-01
    • 2017-12-18
    • 2017-01-18
    • 2016-07-23
    • 2013-11-07
    • 2022-01-25
    相关资源
    最近更新 更多