【问题标题】:It is possible to use one route with two functions in Laravel 5.1?在 Laravel 5.1 中可以使用具有两个功能的一个路由吗?
【发布时间】:2016-01-27 16:30:20
【问题描述】:
Route::get('post/form/{id}', array('as' => 'admin.post.delete', 'uses' => "PostController@deleteForm"));

Route::get('post/form', array('as' => 'admin.post.create', 'uses' => "PostController@createForm"));

我想将上面的两条路线组合在一条路线中,以实现两个功能,创建和删除。因为两条路线只有不同的id

Route::get('post/form/{id}', array('as' => 'admin.post', 'uses' => "PostController@getForm"));

如果我想在没有id 的情况下输入,它会重定向到创建函数。如果我输入id,它会重定向到删除功能。

我怎样才能将一个路由用于两个功能?

【问题讨论】:

  • 你想做的事情是非常不切实际的,你能不能把删除路由更新为post/form/{id}/delete,并把post/form/{id}作为显示路由?

标签: php routes laravel-5.1


【解决方案1】:

正如 James 所说,这并不实用,但您可以通过以下方式实现。

Laravel 让你可以定义可选的路由参数,如下所示。

Route::get('user/{name?}', function ($name = null) {
    return $name;
});

Route::get('user/{name?}', function ($name = 'John') {
    return $name;
});

关于路由参数的 Laravel 文档:Laravel Route Parameters

所以这意味着你可以像这样制作你的路线。

Route::get('post/form/{id?}', array('as' => 'admin.post', 'uses' => "PostController@getForm"))

然后,您需要在您的控制器中检查“id”是否存在。如果不是,则创建用户。如果存在“id”,则删除用户。

【讨论】:

    【解决方案2】:

    您不能将 1 条路线用于 2 种方法。 解决方案是使用一种触发具体方法的方法,例如。

    routes.php

    get('post/form/{id?}', 'PostConteoller@form');
    

    PostController.php

    public function form($id = null) {
        return $id ? $this->deleteForm($id) : $this->createForm();
    }
    

    但是使用 2 条路线要简单得多。

    【讨论】:

    • 这是我想要的。它工作得很好!谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    相关资源
    最近更新 更多