php - 是否可以重新排序或忽略 Controller 路由中的参数?

标签 php laravel laravel-routing

问题标题是我能想到的最明确的,但为了清楚起见,这里有一个用例/示例:

假设我定义了以下路由来显示一篇文章:

Route::get('article/{slug}/{id}', 'ArticleController@show');

...

class ArticleController extends BaseController {

    public function show($id)
    {
        return View::make('article')->with('article', Article::find($id));
    }

}

这是行不通的,因为 show 会将 $id 参数误认为是 $slug 参数。有没有办法只将 $id 参数传递给 show 方法?

最佳答案

我不知道你是否还在寻找解决方案,但由于我遇到了同样的问题并且我不喜欢这些解决方案,所以我这样做了:

在您的 ArticleController 中,您重载了 callAction($method, $parameters) 方法,这是 Laravel Controller 类中的一个方法,所以它看起来像这样:

public function callAction($method, $parameters)
{
        unset($parameters['id']);
        unset($parameters['slug']);

        return parent::callAction($method, $parameters);
}

在此之后你可以轻松地做到这一点:

public function show($id)
{
    return View::make('article')->with('article', Article::find($id));
}

关于php - 是否可以重新排序或忽略 Controller 路由中的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24789577/

相关文章:

PHP/MySQL — 检查用户是普通用户还是管理员

php - 旋转和裁剪

laravel - 如何在 Backpack for Laravel 中添加 ListEntries 表的默认排序?

api - 如何将查询字符串参数传递给 Laravel4 中的路由

regex - 如何在 Laravel 4 中为 Route::group 设置正则表达式参数约束?

php - 仅在存在时显示数组

php - odbc_connect() : SQL error: [unixODBC][Driver Manager]Data source name not found, 且未指定默认驱动程序,SQLConnect 中的 SQL 状态 IM002

laravel - 如何使用 Laravel Sail 配置主管和调度?

php - 如何用 eloquent "with"选择特定的列

php - 如何在 laravel/lumen 路由中使用 angular js 路由?