在使用 nwidart/laravel-modules 進行模組化開發時,每個模組下都會有單獨的靜態資源(CSS、JS等)資料夾,發現包本身並沒有提供比較便利的資源引用方法。以下是用 Artisan 命令列生成軟鏈的解決辦法
生成 Command:
php artisan make:command ModuleAssetLink
app/Consoles/Commands/ModuleAssetsLink.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class ModuleAssetsLink extends Command
{
protected $signature = 'module:assets-link
{module : Module name}
{link : Link name}';
protected $description = '將模組靜態資源對映到專案 `public` 目錄';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$module = $this->argument('module');
$link = $this->argument('link');
if (file_exists(public_path($link))) {
return $this->error("The 'public/{$link}' directory already exists.");
}
$this->laravel->make('files')->link(
module_path($module) . '/Resources/assets', public_path($link)
);
$this->info("The [public/{$link}] directory has been linked.");
}
}
使用:
$ php artisan module:assets-link Admin admin-assets
The [public/admin-assets] directory has been linked.
本作品採用《CC 協議》,轉載必須註明作者和本文連結