我想在Laravel中创建一个返回给定Storage::disk的CDN URL的宏。在宏中,我想访问指定的磁盘并返回该给定磁盘的CDN URL。下面是宏的代码:
<?php
namespace App\Providers;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\ServiceProvider;
class StorageMacroServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
if (!function_exists('cdnUrl'))
{
FilesystemAdapter::macro('cdnUrl', function ($filename) {
$diskName = $this->getDriver();
dd($diskName);
return Storage::disk($diskName)->url($filename);
});
}
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
这是我调用宏的方式:
Storage::disk('local')->cdnUrl('test');
当我将Storage::disk('local')
更改为Storage::disk('public')
时,$diskName
也会相应更改。但是,我无法访问给定驱动程序的磁盘名称。
我知道$diskName是一个League\Flysystem\Filesystem
对象,但我希望能够访问Storage::disk('local')->cdnUrl('test')
中指定的名称
1条答案
按热度按时间wfsdck301#
**Storage::disk()**的参数是帮助确定返回什么类型的适配器示例。
本地盘默认驱动为local:
对于本地驱动,Storage::disk('local ')会返回一个FilesystemAdapter的示例,所以FilesystemAdapter::macro中不需要知道磁盘名称,只需要: