【问题标题】:Where should I define my logic that will be used in a blade template?我应该在哪里定义将在刀片模板中使用的逻辑?
【发布时间】:2021-10-15 14:41:20
【问题描述】:

this question 中,我通过一些代码得到了一个很好的答案。我现在想知道 laravel 的预期实现方式是什么。

代码是:

function getRoutesByGroup(array $group = [])
{
    $list = \Route::getRoutes()->getRoutes();
    if (empty($group)) {
        return $list;
    }
    $routes = [];
    foreach ($list as $route) {
        $action = $route->getAction();
        foreach ($group as $key => $value) {
            if (empty($action[$key])) {
                continue;
            }
            $actionValues = Arr::wrap($action[$key]);
            $values = Arr::wrap($value);
            foreach ($values as $single) {
                foreach ($actionValues as $actionValue) {
                    if (Str::is($single, $actionValue)) {
                        $routes[] = $route;
                    } elseif($actionValue == $single) {
                        $routes[] = $route;
                    }
                }
            }
        }
    }
    return $routes;
}

Route::group(['as' => 'main'], function () {
    Route::get('/', function () {
        return view('pages.start');
    })->name('Home');
    
    Route::get('/foobar', function () {
        return view('pages.foobar');
    })->name('Home');
    
    Route::get('/business', function () {
        return view('pages.business');
    })->name('Business');
});

getRoutesByGroup(['as' => 'main']); // where to load this?

我想在两个刀片模板中使用它来呈现菜单。我的第一个想法是将其放入一个 Trait 并在 AppServiceProvider.php 中使用该 Trait,但这似乎只有 5 个内部点燃路线可用,所以我猜它在引导过程中为时过早。

在这种情况下正确的方法是什么?我是否制作了一个 Facade,另一个服务容器,我是否通过在模板中注入来加载它,我是否制作了一个全局变量?

【问题讨论】:

    标签: laravel model-view-controller laravel-blade laravel-8


    【解决方案1】:

    我最终创建了一个新的服务提供商并使用了view composer

    不过,如果有更好、更 MVCish 的方式,我很高兴有任何意见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 2011-06-28
      • 2017-04-19
      • 2015-08-12
      相关资源
      最近更新 更多