在Laravel 5.1中可以使用一个具有两个功能的路由吗?

时间:2015-10-28 02:29:57

标签: php routes laravel-5.1

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键入,则会重定向到删除功能。

如何为两个功能使用一个路由?

2 个答案:

答案 0 :(得分:1)

正如詹姆斯所说,这不太实际,但你可以通过以下方式实现这一点。

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'出现删除用户。

答案 1 :(得分:1)

您无法使用1种路线进行2种方法。 解决方案是使用1种方法来激发具体方法,例如

routes.php文件

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

PostController.php

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

然而,使用2条路线要简单得多。