php - Laravel 5 条件路由和多个 Controller

标签 php laravel model-view-controller routes dynamic-url

所以基本上我的应用程序有两种类型的动态网址..

  1. app.com/{page}
  2. app.com/{user}

两者都有自己的 Controller

  1. PageController@index
  2. 用户\ProfileController@index

但我正在努力让它发挥作用。

我尝试了几种不同的方法。这是我尝试过的两个..

Route::get('{slug}', function($slug) {
    if (App\Page::where('slug', $slug)->count()) {
        // return redirect()->action('PageController@index', [$slug]);
        // return App::make('App\Http\Controllers\PageController', [$slug])->index();
        return 'Page found';
    } else if (App\User::where('username', $slug)->count()) {
        // return redirect()->action('User\ProfileController@index', [$slug]);
        // return App::make('App\Http\Controllers\User\ProfileController', [$slug])->index();
        return 'User found';
    } else {
        return abort(404);
    }
});

我觉得我应该使用中间件/过滤器来做到这一点。任何帮助都会很棒。谢谢。

最佳答案

我认为您可以通过 Route::group 使用中间件来过滤它是页面还是用户来实现您的目标。

Route::group(['middleware' => 'isPage'], function () {
    Route::get('{slug}', ['as'=> 'pages.show', 'uses' => 'PageController@show']);
});

Route::group(['middleware' => 'isUser'], function () {
    Route::get('{slug}', ['as'=> 'users.show', 'uses' => 'User\ProfileController@show']);
});

关于php - Laravel 5 条件路由和多个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33033524/

相关文章:

php - Laravel 5.4 如何通过表单请求为用户分配角色?

php - 如何解码 php 中的 url,其中 url 使用 encodeURIComponent() 编码

php - Laravel Eloquent : How does it work? 基于动态模式元数据查找 = 性能?

php - 调用未定义函数 Illuminate\Encryption\openssl_decrypt()

model-view-controller - MVC - 通过ViewBag将List传递给View

c# - 有没有办法用 WebAPI 生成 Urls?

php - 使用 CSS 更改 Font Awesome 图标不起作用

javascript - 如何在脚本部分中使用我的 php 代码部分中的变量?

php - Laravel 5: mkdir/Filesystem::makeDirectory 具有配置权限

python - 如何使 Controller 保持事件状态