【问题标题】:How to use URL:: or asset() in config files in laravel 5如何在 laravel 5 的配置文件中使用 URL:: 或 assets()
【发布时间】:2018-04-19 22:11:38
【问题描述】:

在任何配置文件中,如果我使用 URL 类,我会收到错误“找不到类 URL”;如果我使用函数“资产”,当我更新 composer.json 时,我会收到此错误: 可捕获的致命错误:传递给 Illuminate\Routing\UrlGenerator::__construct() 的参数 2 必须是 Illuminate\Http\Request 的实例,给定 null,

在配置文件之外都可以正常工作

return [
    'photos_url' => URL::asset('xxx'),
];

return [
    'photos_url' => asset('xxx'),
];

测试

echo config('site.photos_url'); // or echo Config::get('site.photos_url');

【问题讨论】:

  • 因为 URL 生成器还没有准备好。您不能只将xxx 部分存储在配置中并在需要时生成完整的 URL 吗?如果你想拥有漂亮的语法,你可以创建一个小助手函数,为你应用asset()...

标签: laravel-5


【解决方案1】:

您不应在配置中使用动态代码。作为解决方案,您可以使用ConfigServiceProvider 添加任何特定案例:

public function register()
{
    config([
        'photos_url' => assets('xxx'),
        'services.facebook.redirect' => url('auth/callback/facebook'),
    ]);
}

来源:https://github.com/laravel/framework/issues/7671

【讨论】:

    【解决方案2】:

    配置很早就加载了,可能不打算使用框架中的任何东西,除了 Dotenv

    return [
        'photos_url' => URL::asset('xxx'),
    ];
    

    您可以使用:

    return [
        'photos_url' => env('APP_URL').'/rest_of_path.ext',
    ];
    

    来源:Laravel 问题#7671

    【讨论】:

      猜你喜欢
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 2019-11-03
      • 1970-01-01
      • 2015-05-11
      相关资源
      最近更新 更多