在laravel 5.1配置文件中使用命名路由

时间:2015-10-21 21:13:17

标签: php laravel laravel-5.1

我正在尝试在配置文件中使用命名路由,并且我一直收到500错误。

<?php
return [
    'Warden' => [
         route('warden::models', ['user']), 
         'fa fa-btn fa-fw fa-user-secret text-success'
    ],
    'Dispatch' => [
         route('dispatch::index'), 
         'fa fa-btn fa-fw fa-fa-microphone text-success'
    ],
    'Identicon' => [
         route('identicon::main', [md5(Auth::user()->email)]), 
         'fa fa-btn fa-fw fa-get-pocket text-success'
    ]
];

我想知道Laravel中是否有某些东西阻止了这种情况的发生。如果没有,我是在做一些不正确的事情吗?

另外:旁注。

PHP Catchable fatal error:  
   Argument 2 passed to Illuminate\Routing\UrlGenerator::__construct()  must be an instance of Illuminate\Http\Request, null given, called in 
   /home/austin/html/hidden/vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php on line 62 
   and defined in /home/austin/html/hidden/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php on line 99

我在控制台中遇到的唯一错误是仅在我使用php artisan serve时才会出现错误。

更新

我不再在工作,所以我没有确切的源代码;但是,它与下面的内容类似。

(在刀片文件中),其中kregel是目录,菜单是文件名。

@foreach(config('kregel.menu') as $menu_item => list($link, $icon))
  <li>
    <a href="{{$link}}>
      $menu_item <i class="{{$icon}}"></i>
    </a>
  </li>
@endforeach

1 个答案:

答案 0 :(得分:1)

我相信我找到了我的解决方案,并认为我只是为了开源而分享。

所以不要只使用Auth facade或route方法。我改为选择使用外观的闭合和路线的字符串。

示例:

'Identicon' => [
   'link' =>[
      'identicon::main', 
      function() {
         return md5(Auth::user()->email);
      }
   ], 
   'icon' => 'fa fa-btn fa-fw fa-get-pocket text-success'
]

我用来制作和构建链接的实际功能。

protected function linkBuilder($link){
    // This makes sure that there is indeed parameters.
    if(!is_array($link)){
        return route($link);
    }

    // This grabs the two expected parameters.
    list($route, $params) = $link;

    // Now we see if the parameter(s) is actually an anon function
    if($params instanceof Closure) {
        // call this function
        return route($route, $params());
    }
    // This must have no function and must just be 
    // either an array of parameters or just a string
    return route($route, $params);
}

现在要使用此功能,您最终会使用键“#”链接传递数组。这个功能。因此,最终返回的是正确的值。

这意味着生成的路径功能实际上看起来像

route('identicon::main', md5(Auth::user()->email));

虽然它可能有点凌乱,但对于我的任务来说,它的效果非常好。如果有任何其他方式,任何人都可以考虑在我的配置中使用外观或命名路线表格,请告诉我。