【问题标题】:Use controller namespace from route closure使用路由闭包中的控制器命名空间
【发布时间】:2016-05-20 19:46:29
【问题描述】:

我希望 Route::group() 使用闭包而不是使用 laravel 语法来使用特定的命名空间。所以而不是

Route::group(['namespace' => 'My\Namespace\For\Controllers'), function () {

     // TestController found in `My\Namespace\For\Controllers`
     Route::resource('resource/url', TestController@test)
}

我想知道是否有可能有类似的东西

Route::group(function () {

     // Some logic for using the `My\Namespace\For\Controllers` 
     // namespace for all routes within this group

     // Controller found in `My\Namespace\For\Controllers`
     Route::resource('resource/url', Controller@test)
}

我想要这个功能,所以我可以根据传递给路由的参数动态决定控制器名称空间。

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.2


    【解决方案1】:

    我想这样做的正确方法是创建中间件,但绝对不是 route.php 文件。

    https://laravel.com/docs/5.2/middleware

    更新

    如果您只需要为组中的所有控制器设置命名空间,您可以这样做:

    Route::group(['namespace' => 'My\Namespace\For\Controllers'], function() {
        // Controllers within the "My\Namespace\For\Controllers" namespace
    });
    

    https://laravel.com/docs/5.2/routing#route-group-namespaces

    【讨论】:

    • 好主意,我已经在我的项目中使用了一些自定义中间件。您是否愿意详细说明如何从中间件指定控制器命名空间?
    • 那么,你只需要将命名空间添加到所有控制器吗?然后你可以使用标准的 Laravel 命名空间组更轻松地完成它。请检查更新的答案。
    • 我需要根据 url 中的参数更改命名空间。我可以提取参数并在闭包中构建命名空间,我只是不知道如何将该命名空间应用到该组中的每个控制器
    猜你喜欢
    • 2015-07-05
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多