【问题标题】:Dynamic Routing (Auto Create Route) on Laravel 5 - View not rendered on App::call()Laravel 5 上的动态路由(自动创建路由) - 视图未在 App::call() 上呈现
【发布时间】:2018-09-04 18:47:57
【问题描述】:

基本上,我的应用有一个管理员 (CMS)。我已经包含了菜单和子菜单设置,它们最终会填充到我的导航部分。

Name: User
URL: setup/user
Icon: fa fa-user

问题是,如果我添加新菜单(如上),我必须在 web.php 上设置另一个路由,如:

Route::resource('setup/user','UserController');

嗯,会有很多菜单要创建,我的 web.php 不知何故被很多路由弄乱了。

我关注了这篇文章,它给了我一个想法,我对其进行了调整并创建了自己的想法。

https://laracasts.com/discuss/channels/laravel/dynamically-calling-a-controller-method-in-laravel-5

这是我所做的:

function wildcard($route, $controller, $verbs = ['get', 'post']) {

$stack      = Route::getGroupStack();
$namespace  = end($stack)['namespace'];
$controller = ucfirst(strtolower($route)).'Controller';


Route::match($verbs, rtrim($route, '/') . '/{method}', function($method, $params = null) use ($route, $namespace, $controller)
{

    $controller = $namespace . '\\' . $controller;

    $method = $controller . '@' . $method;
    $params
        ? App::call($method, explode('/', $params))
        : App::call($method);

});
}

wildcard('home',null);

我的家庭控制器:

public function index()
{
    return view('pages.common.dashboard');
}

但它不会在我的索引方法上显示视图,只是空白页。但它确实得到了方法,因为我可以从方法中转储。

也许动态路由有更好的方法。谢谢。

【问题讨论】:

  • 我也遇到了同样的情况,有没有人有解决办法?

标签: laravel laravel-5 laravel-5.5


【解决方案1】:

解决方案:你必须return你的App::call()

Route::match($verbs, rtrim($route, '/') . '/{method}', function($method, $params = null) use ($route, $namespace, $controller)
{

    $controller = $namespace . '\\' . $controller;

    $method = $controller . '@' . $method;
    if($params){
            // return the App::call
            return App::call($method, explode('/', $params));
    } else {
            // return the App::call
            return App::call($method);
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多