EC-SPOKE配付構想
MIT+GitHub Packages+ComposerによるSRC+APPモデル
概要
全体を雛形で提供する。配付方式:ZIP or COMPOSER CORE部分もGitHub Packages+Composerにして部分更新
ディレクトリ構造
ec-spoke/
├── core/ ← MIT配布ライブラリ
│ ├── composer.json
│ └── src/
└── app/ ← 実際のアプリ本体
├── composer.json ← "require": {"other-org/ec-spoke-core": "^1.0"}
├── vendor/
├── public/
├── config/
└── resources/
composer.json の設定案
core側
{
"name": "other-org/ec-spoke-core",
"description": "EC-SPOKE core framework",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"EcSpoke\\Core\\": "src/"
}
},
"require": {
"laravel/framework": "^11.0",
"filament/filament": "^4.1"
}
}
app側
{
"name": "other-org/ec-spoke-app",
"require": {
"php": "^8.2",
"other-org/ec-spoke-core": "^1.0"
},
"repositories": [
{
"type": "composer",
"url": "https://github.com/other-org/ec-spoke-core"
}
]
}
書換方法
use EcSpoke\Core\Filament\Resources\ProductResource; use Filament\Forms\Components\TextInput;
ProductResource::configure(function ($resource) {
$resource->form(function ($form) {
$form->schema([
...$form->getSchema(),
TextInput::make('custom_field')->label('内部メモ'),
]);
});
});
クラスのオーバーライド
// app/Admin/Resources/BrandResource.php
namespace App\Admin\Resources;
use EcSpoke\Core\Filament\Resources\BrandResource as BaseBrandResource;
class BrandResource extends BaseBrandResource
{
protected static ?string $navigationGroup = 'カスタム商品管理';
public static function form(Schema $schema): Schema
{
$schema = parent::form($schema);
// 任意の項目を追加
return $schema;
}
}