php - 我如何在 Laravel 中执行变量/通配符路由?

标签 php laravel-5 laravel-routing

我正在使用 Laravel 5,需要做一个通配符路由,根据从数据库中提取的 URL 类型将用户发送到不同的 Controller 。

我需要检查数据库中的 URL slug,然后根据保存在数据库中的 slug 类型加载相关的 Controller /方法。我正在努力处理最后一部分,即将用户发送到相关 Controller 。以下是我的路线:

Route::any('{slug}', function($slug){
    $url = \App\Url_slug::where('url_slug', $slug)->first();
    if($url->count()){
        switch($url->url_type){
            case 'product':
                // SEND USER TO PRODUCT CONTROLLER
                break;
            case 'category':
                // SEND USER TO CATEGORY CONTROLLER
                break;
            case 'page':
                // SEND USER TO PAGE CONTROLLER
                break;
        }
    } else {
        abort(404);
    }
});

为了将用户发送到相关 Controller ,我需要用什么来替换评论?

最佳答案

为此,您需要加载一个 app() 实例,然后调用 make('Controller') 方法以及 callAction。完整路线如下:

Route::any('{slug}', function($slug){
    $url = \App\Url_slug::where('url_slug', $slug)->first();
    if($url->count()){
        $app = app();

        switch($url->url_type){
            case 'product':
                $controller = $app->make('App\Http\Controllers\ProductController');
                break;
            case 'category':
                $controller = $app->make('App\Http\Controllers\CategoryController');
                break;
            case 'page':
                $controller = $app->make('App\Http\Controllers\PageController');
                break;
        }
        return $controller->callAction('view', ['url_slug' => $url->url_slug, 'url_slug_id' => $url->id]);
    } else {
        abort(404);
    }
});

关于php - 我如何在 Laravel 中执行变量/通配符路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31721736/

相关文章:

php - Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING 错误

php - Laravel,将JSON数组转换为Array,并且只从Array中获取一个对象

php - 如何在后台休眠 PHP(Laravel 5.2)

javascript - if 语句不适用于 php/html/javascript。总是假的

php - Laravel 模型的多列 "pivot"表查询

php - Blade 模板语法错误,意外 '}' - laravel 5

php - 在 Laravel 5 的中间件网络组中获取子域

javascript - laravel中将数组传递给ajax请求时出现问题

php - 在 Laravel 中通过路由将变量传递到 Controller 时出现错误

php - 从 Laravel 访问查询字符串值