如何在laravel 5中的配置文件中使用URL ::或asset()

ebe*_*dez 6 laravel-5

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

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

return [
    'photos_url' => URL::asset('xxx'),
];
Run Code Online (Sandbox Code Playgroud)

要么

return [
    'photos_url' => asset('xxx'),
];
Run Code Online (Sandbox Code Playgroud)

测试

echo config('site.photos_url'); // or echo Config::get('site.photos_url');
Run Code Online (Sandbox Code Playgroud)

bma*_*ovu 6

配置加载得非常早,除了Dotenv之外,可能不打算使用框架中的任何内容

return [
    'photos_url' => URL::asset('xxx'),
];
Run Code Online (Sandbox Code Playgroud)

相反,您可以使用:

return [
    'photos_url' => env('APP_URL').'/rest_of_path.ext',
];
Run Code Online (Sandbox Code Playgroud)

资料来源:Laravel 问题#7671


zub*_*b0r 4

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

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

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