如何在laravel的路线中使用功能

时间:2016-08-09 20:52:37

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-routing

我需要在路由中使用函数来返回控制器名称。这是我的路由器代码。

Route::group(['middleware'=>'auth'],function(){
    Route::Resource('profile', return_controller(session()->get('category')));
});

function return_controller($category_id) {
    switch ($category_id) {
        case 1: return 'ServicesHallController';
            break;
        case 2: return 'ServicesBeautycenterController';
            break;
        case 3: return 'ServicesDressController';
            break;
        case 4: return 'ServicesCarController';
            break;
        case 5: return 'ServicesPhotographyController';
            break;
        case 6: return 'ServicesHoneymoonController';
            break;
    }
}

2 个答案:

答案 0 :(得分:0)

您应该使用中间件来处理支票。 将您的controller_returns函数重构为中间件。

否则,laravel是PHP,所以如果你调用一个需要字符串的函数,那么该函数返回一个应该有效的字符串。  如果它不,您可能忘记了返回的字符串中的命名空间。

例如:'name \ space \ controllerName'

如果它仍然不起作用,请检查您的会话存储是否为空。

答案 1 :(得分:0)

我会将控制器名称放入查找数组中,并将其作为内联字符串访问,如下所示:

var error = new Error("New password and confirmation do not match");
error.status = 400;
return cb(error);

如果需要,可以将控制器查找表放入配置数组中。与选择结构相比,数组更便于携带,更易于维护。