mirror of
https://github.com/filamentphp/filament.git
synced 2026-09-01 15:09:33 +08:00
=fix make commands
This commit is contained in:
@@ -18,14 +18,19 @@ class MakePageCommand extends Command
|
||||
|
||||
public function handle(): int
|
||||
{
|
||||
$page = (string) Str::of($this->argument('name') ?? $this->askRequired('Name (e.g. `Settings`)', 'name'))
|
||||
$path = config('filament.pages.path', app_path('Filament\\Pages\\'));
|
||||
$resourcesPath = config('filament.resources.path', app_path('Filament\\Resources\\'));
|
||||
$namespace = config('filament.pages.namespace', 'App\\Filament\\Pages');
|
||||
$resourcesNamespace = config('filament.resources.namespace', 'App\\Filament\\Resources');
|
||||
|
||||
$page = (string)Str::of($this->argument('name') ?? $this->askRequired('Name (e.g. `Settings`)', 'name'))
|
||||
->trim('/')
|
||||
->trim('\\')
|
||||
->trim(' ')
|
||||
->replace('/', '\\');
|
||||
$pageClass = (string) Str::of($page)->afterLast('\\');
|
||||
$pageClass = (string)Str::of($page)->afterLast('\\');
|
||||
$pageNamespace = Str::of($page)->contains('\\') ?
|
||||
(string) Str::of($page)->beforeLast('\\') :
|
||||
(string)Str::of($page)->beforeLast('\\') :
|
||||
'';
|
||||
|
||||
$resource = null;
|
||||
@@ -35,18 +40,18 @@ class MakePageCommand extends Command
|
||||
$resourceInput = $this->option('resource') ?? $this->ask('(Optional) Resource (e.g. `UserResource`)');
|
||||
|
||||
if ($resourceInput !== null) {
|
||||
$resource = (string) Str::of($resourceInput)
|
||||
$resource = (string)Str::of($resourceInput)
|
||||
->studly()
|
||||
->trim('/')
|
||||
->trim('\\')
|
||||
->trim(' ')
|
||||
->replace('/', '\\');
|
||||
|
||||
if (! Str::of($resource)->endsWith('Resource')) {
|
||||
if (!Str::of($resource)->endsWith('Resource')) {
|
||||
$resource .= 'Resource';
|
||||
}
|
||||
|
||||
$resourceClass = (string) Str::of($resource)
|
||||
$resourceClass = (string)Str::of($resource)
|
||||
->afterLast('\\');
|
||||
|
||||
$resourcePage = $this->option('type') ?? $this->choice(
|
||||
@@ -63,20 +68,23 @@ class MakePageCommand extends Command
|
||||
);
|
||||
}
|
||||
|
||||
$view = Str::of($page)
|
||||
->prepend($resource === null ? 'filament\\pages\\' : "filament\\resources\\{$resource}\\pages\\")
|
||||
$view = Str::of($page)->prepend(
|
||||
(string)Str::of($resource === null ? $namespace : "{$resourcesNamespace}\\{$resource}\\pages\\")
|
||||
->replace('App\\', '')
|
||||
)
|
||||
->explode('\\')
|
||||
->map(fn ($segment) => Str::kebab($segment))
|
||||
->map(fn($segment) => Str::lower(Str::kebab($segment)))
|
||||
->implode('.');
|
||||
|
||||
$path = app_path(
|
||||
(string) Str::of($page)
|
||||
->prepend($resource === null ? 'Filament\\Pages\\' : "Filament\\Resources\\{$resource}\\Pages\\")
|
||||
->replace('\\', '/')
|
||||
->append('.php'),
|
||||
);
|
||||
$path = (string)Str::of($page)
|
||||
->prepend('/')
|
||||
->prepend($resource === null ? $path : "{$resourcesPath}\\{$resource}\\Pages\\")
|
||||
->replace('\\', '/')
|
||||
->replace('//', '/')
|
||||
->append('.php');
|
||||
|
||||
$viewPath = resource_path(
|
||||
(string) Str::of($view)
|
||||
(string)Str::of($view)
|
||||
->replace('.', '/')
|
||||
->prepend('views/')
|
||||
->append('.blade.php'),
|
||||
@@ -87,22 +95,22 @@ class MakePageCommand extends Command
|
||||
$resourcePage === 'custom' ? [$viewPath] : [],
|
||||
);
|
||||
|
||||
if (! $this->option('force') && $this->checkForCollision($files)) {
|
||||
if (!$this->option('force') && $this->checkForCollision($files)) {
|
||||
return static::INVALID;
|
||||
}
|
||||
|
||||
if ($resource === null) {
|
||||
$this->copyStubToApp('Page', $path, [
|
||||
'class' => $pageClass,
|
||||
'namespace' => 'App\\Filament\\Pages' . ($pageNamespace !== '' ? "\\{$pageNamespace}" : ''),
|
||||
'namespace' => $namespace . ($pageNamespace !== '' ? "\\{$pageNamespace}" : ''),
|
||||
'view' => $view,
|
||||
]);
|
||||
} else {
|
||||
$this->copyStubToApp($resourcePage === 'custom' ? 'CustomResourcePage' : 'ResourcePage', $path, [
|
||||
'baseResourcePage' => 'Filament\\Resources\\Pages\\' . ($resourcePage === 'custom' ? 'Page' : $resourcePage),
|
||||
'baseResourcePageClass' => $resourcePage === 'custom' ? 'Page' : $resourcePage,
|
||||
'namespace' => "App\\Filament\\Resources\\{$resource}\\Pages" . ($pageNamespace !== '' ? "\\{$pageNamespace}" : ''),
|
||||
'resource' => $resource,
|
||||
'namespace' => "{$resourcesNamespace}\\{$resource}\\Pages" . ($pageNamespace !== '' ? "\\{$pageNamespace}" : ''),
|
||||
'resource' => "$resourcesNamespace\\$resourceClass",
|
||||
'resourceClass' => $resourceClass,
|
||||
'resourcePageClass' => $pageClass,
|
||||
'view' => $view,
|
||||
|
||||
@@ -21,7 +21,10 @@ class MakeResourceCommand extends Command
|
||||
|
||||
public function handle(): int
|
||||
{
|
||||
$model = (string) Str::of($this->argument('name') ?? $this->askRequired('Model (e.g. `BlogPost`)', 'name'))
|
||||
$path = config('filament.resources.path', app_path('Filament\\Resources\\'));
|
||||
$namespace = config('filament.resources.namespace', 'App\\Filament\\Resources');
|
||||
|
||||
$model = (string)Str::of($this->argument('name') ?? $this->askRequired('Model (e.g. `BlogPost`)', 'name'))
|
||||
->studly()
|
||||
->beforeLast('Resource')
|
||||
->trim('/')
|
||||
@@ -34,11 +37,11 @@ class MakeResourceCommand extends Command
|
||||
$model = 'Resource';
|
||||
}
|
||||
|
||||
$modelClass = (string) Str::of($model)->afterLast('\\');
|
||||
$modelClass = (string)Str::of($model)->afterLast('\\');
|
||||
$modelNamespace = Str::of($model)->contains('\\') ?
|
||||
(string) Str::of($model)->beforeLast('\\') :
|
||||
(string)Str::of($model)->beforeLast('\\') :
|
||||
'';
|
||||
$pluralModelClass = (string) Str::of($modelClass)->pluralStudly();
|
||||
$pluralModelClass = (string)Str::of($modelClass)->pluralStudly();
|
||||
|
||||
$resource = "{$model}Resource";
|
||||
$resourceClass = "{$modelClass}Resource";
|
||||
@@ -49,11 +52,13 @@ class MakeResourceCommand extends Command
|
||||
$editResourcePageClass = "Edit{$modelClass}";
|
||||
$viewResourcePageClass = "View{$modelClass}";
|
||||
|
||||
$baseResourcePath = app_path(
|
||||
(string) Str::of($resource)
|
||||
->prepend('Filament\\Resources\\')
|
||||
->replace('\\', '/'),
|
||||
);
|
||||
$baseResourcePath =
|
||||
(string)Str::of($resource)
|
||||
->prepend('/')
|
||||
->prepend($path)
|
||||
->replace('\\', '/')
|
||||
->replace('//', '/');
|
||||
|
||||
$resourcePath = "{$baseResourcePath}.php";
|
||||
$resourcePagesDirectory = "{$baseResourcePath}/Pages";
|
||||
$listResourcePagePath = "{$resourcePagesDirectory}/{$listResourcePageClass}.php";
|
||||
@@ -62,21 +67,21 @@ class MakeResourceCommand extends Command
|
||||
$editResourcePagePath = "{$resourcePagesDirectory}/{$editResourcePageClass}.php";
|
||||
$viewResourcePagePath = "{$resourcePagesDirectory}/{$viewResourcePageClass}.php";
|
||||
|
||||
if (! $this->option('force') && $this->checkForCollision([
|
||||
$resourcePath,
|
||||
$listResourcePagePath,
|
||||
$manageResourcePagePath,
|
||||
$createResourcePagePath,
|
||||
$editResourcePagePath,
|
||||
$viewResourcePagePath,
|
||||
])) {
|
||||
if (!$this->option('force') && $this->checkForCollision([
|
||||
$resourcePath,
|
||||
$listResourcePagePath,
|
||||
$manageResourcePagePath,
|
||||
$createResourcePagePath,
|
||||
$editResourcePagePath,
|
||||
$viewResourcePagePath,
|
||||
])) {
|
||||
return static::INVALID;
|
||||
}
|
||||
|
||||
$pages = '';
|
||||
$pages .= '\'index\' => Pages\\' . ($this->option('simple') ? $manageResourcePageClass : $listResourcePageClass) . '::route(\'/\'),';
|
||||
|
||||
if (! $this->option('simple')) {
|
||||
if (!$this->option('simple')) {
|
||||
$pages .= PHP_EOL . "'create' => Pages\\{$createResourcePageClass}::route('/create'),";
|
||||
|
||||
if ($this->option('view')) {
|
||||
@@ -142,10 +147,10 @@ class MakeResourceCommand extends Command
|
||||
) : $this->indentString('//', 4),
|
||||
'model' => $model === 'Resource' ? 'Resource as ResourceModel' : $model,
|
||||
'modelClass' => $model === 'Resource' ? 'ResourceModel' : $modelClass,
|
||||
'namespace' => 'App\\Filament\\Resources' . ($resourceNamespace !== '' ? "\\{$resourceNamespace}" : ''),
|
||||
'namespace' => $namespace . ($resourceNamespace !== '' ? "\\{$resourceNamespace}" : ''),
|
||||
'pages' => $this->indentString($pages, 3),
|
||||
'relations' => $this->indentString($relations, 1),
|
||||
'resource' => $resource,
|
||||
'resource' => "$namespace\\$resourceClass",
|
||||
'resourceClass' => $resourceClass,
|
||||
'tableActions' => $this->indentString($tableActions, 4),
|
||||
'tableBulkActions' => $this->indentString($tableBulkActions, 4),
|
||||
@@ -160,15 +165,15 @@ class MakeResourceCommand extends Command
|
||||
|
||||
if ($this->option('simple')) {
|
||||
$this->copyStubToApp('ResourceManagePage', $manageResourcePagePath, [
|
||||
'namespace' => "App\\Filament\\Resources\\{$resource}\\Pages",
|
||||
'resource' => $resource,
|
||||
'namespace' => "{$namespace}\\{$resource}\\Pages",
|
||||
'resource' => "$namespace\\$resourceClass",
|
||||
'resourceClass' => $resourceClass,
|
||||
'resourcePageClass' => $manageResourcePageClass,
|
||||
]);
|
||||
} else {
|
||||
$this->copyStubToApp('ResourceListPage', $listResourcePagePath, [
|
||||
'namespace' => "App\\Filament\\Resources\\{$resource}\\Pages",
|
||||
'resource' => $resource,
|
||||
'namespace' => "{$namespace}\\{$resource}\\Pages",
|
||||
'resource' => "$namespace\\$resourceClass",
|
||||
'resourceClass' => $resourceClass,
|
||||
'resourcePageClass' => $listResourcePageClass,
|
||||
]);
|
||||
@@ -176,8 +181,8 @@ class MakeResourceCommand extends Command
|
||||
$this->copyStubToApp('ResourcePage', $createResourcePagePath, [
|
||||
'baseResourcePage' => 'Filament\\Resources\\Pages\\CreateRecord',
|
||||
'baseResourcePageClass' => 'CreateRecord',
|
||||
'namespace' => "App\\Filament\\Resources\\{$resource}\\Pages",
|
||||
'resource' => $resource,
|
||||
'namespace' => "{$namespace}\\{$resource}\\Pages",
|
||||
'resource' => "$namespace\\$resourceClass",
|
||||
'resourceClass' => $resourceClass,
|
||||
'resourcePageClass' => $createResourcePageClass,
|
||||
]);
|
||||
@@ -186,8 +191,8 @@ class MakeResourceCommand extends Command
|
||||
|
||||
if ($this->option('view')) {
|
||||
$this->copyStubToApp('ResourceViewPage', $viewResourcePagePath, [
|
||||
'namespace' => "App\\Filament\\Resources\\{$resource}\\Pages",
|
||||
'resource' => $resource,
|
||||
'namespace' => "{$namespace}\\{$resource}\\Pages",
|
||||
'resource' => "$namespace\\$resourceClass",
|
||||
'resourceClass' => $resourceClass,
|
||||
'resourcePageClass' => $viewResourcePageClass,
|
||||
]);
|
||||
@@ -206,8 +211,8 @@ class MakeResourceCommand extends Command
|
||||
|
||||
$this->copyStubToApp('ResourceEditPage', $editResourcePagePath, [
|
||||
'actions' => $this->indentString($editPageActions, 3),
|
||||
'namespace' => "App\\Filament\\Resources\\{$resource}\\Pages",
|
||||
'resource' => $resource,
|
||||
'namespace' => "{$namespace}\\{$resource}\\Pages",
|
||||
'resource' => "$namespace\\$resourceClass",
|
||||
'resourceClass' => $resourceClass,
|
||||
'resourcePageClass' => $editResourcePageClass,
|
||||
]);
|
||||
|
||||
@@ -18,14 +18,19 @@ class MakeWidgetCommand extends Command
|
||||
|
||||
public function handle(): int
|
||||
{
|
||||
$widget = (string) Str::of($this->argument('name') ?? $this->askRequired('Name (e.g. `BlogPostsChart`)', 'name'))
|
||||
$path = config('filament.widgets.path', app_path('Filament\\Widgets\\'));
|
||||
$resourcesPath = config('filament.resources.path', app_path('Filament\\Resources\\'));
|
||||
$namespace = config('filament.widgets.namespace', 'App\\Filament\\Widgets');
|
||||
$resourcesNamespace = config('filament.resources.namespace', 'App\\Filament\\Resources');
|
||||
|
||||
$widget = (string)Str::of($this->argument('name') ?? $this->askRequired('Name (e.g. `BlogPostsChart`)', 'name'))
|
||||
->trim('/')
|
||||
->trim('\\')
|
||||
->trim(' ')
|
||||
->replace('/', '\\');
|
||||
$widgetClass = (string) Str::of($widget)->afterLast('\\');
|
||||
$widgetClass = (string)Str::of($widget)->afterLast('\\');
|
||||
$widgetNamespace = Str::of($widget)->contains('\\') ?
|
||||
(string) Str::of($widget)->beforeLast('\\') :
|
||||
(string)Str::of($widget)->beforeLast('\\') :
|
||||
'';
|
||||
|
||||
$resource = null;
|
||||
@@ -34,45 +39,50 @@ class MakeWidgetCommand extends Command
|
||||
$resourceInput = $this->option('resource') ?? $this->ask('(Optional) Resource (e.g. `BlogPostResource`)');
|
||||
|
||||
if ($resourceInput !== null) {
|
||||
$resource = (string) Str::of($resourceInput)
|
||||
$resource = (string)Str::of($resourceInput)
|
||||
->studly()
|
||||
->trim('/')
|
||||
->trim('\\')
|
||||
->trim(' ')
|
||||
->replace('/', '\\');
|
||||
|
||||
if (! Str::of($resource)->endsWith('Resource')) {
|
||||
if (!Str::of($resource)->endsWith('Resource')) {
|
||||
$resource .= 'Resource';
|
||||
}
|
||||
|
||||
$resourceClass = (string) Str::of($resource)
|
||||
$resourceClass = (string)Str::of($resource)
|
||||
->afterLast('\\');
|
||||
}
|
||||
|
||||
$view = Str::of($widget)
|
||||
->prepend($resource === null ? 'filament\\widgets\\' : "filament\\resources\\{$resource}\\widgets\\")
|
||||
$view = Str::of($widget)->prepend(
|
||||
(string)Str::of($resource === null ? $namespace : "{$resourcesNamespace}\\{$resource}\\widgets\\")
|
||||
->replace('App\\', '')
|
||||
)
|
||||
->explode('\\')
|
||||
->map(fn ($segment) => Str::kebab($segment))
|
||||
->map(fn($segment) => Str::lower(Str::kebab($segment)))
|
||||
->implode('.');
|
||||
|
||||
$path = app_path(
|
||||
(string) Str::of($widget)
|
||||
->prepend($resource === null ? 'Filament\\Widgets\\' : "Filament\\Resources\\{$resource}\\Widgets\\")
|
||||
->replace('\\', '/')
|
||||
->append('.php'),
|
||||
);
|
||||
|
||||
$path = (string)Str::of($widget)
|
||||
->prepend('/')
|
||||
->prepend($resource === null ? $path : "{$resourcesPath}\\{$resource}\\Widgets\\")
|
||||
->replace('\\', '/')
|
||||
->replace('//', '/')
|
||||
->append('.php');
|
||||
|
||||
|
||||
$viewPath = resource_path(
|
||||
(string) Str::of($view)
|
||||
(string)Str::of($view)
|
||||
->replace('.', '/')
|
||||
->prepend('views/')
|
||||
->append('.blade.php'),
|
||||
);
|
||||
|
||||
if (! $this->option('force') && $this->checkForCollision([
|
||||
$path,
|
||||
($this->option('stats-overview') || $this->option('chart')) ?: $viewPath,
|
||||
])) {
|
||||
|
||||
if (!$this->option('force') && $this->checkForCollision([
|
||||
$path,
|
||||
($this->option('stats-overview') || $this->option('chart')) ?: $viewPath,
|
||||
])) {
|
||||
return static::INVALID;
|
||||
}
|
||||
|
||||
@@ -93,23 +103,23 @@ class MakeWidgetCommand extends Command
|
||||
|
||||
$this->copyStubToApp('ChartWidget', $path, [
|
||||
'class' => $widgetClass,
|
||||
'namespace' => filled($resource) ? "App\\Filament\\Resources\\{$resource}\\Widgets" . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : '') : 'App\\Filament\\Widgets' . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : ''),
|
||||
'namespace' => filled($resource) ? "{$resourcesNamespace}\\{$resource}\\Widgets" . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : '') : $namespace . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : ''),
|
||||
'chart' => Str::studly($chart),
|
||||
]);
|
||||
} elseif ($this->option('table')) {
|
||||
$this->copyStubToApp('TableWidget', $path, [
|
||||
'class' => $widgetClass,
|
||||
'namespace' => filled($resource) ? "App\\Filament\\Resources\\{$resource}\\Widgets" . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : '') : 'App\\Filament\\Widgets' . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : ''),
|
||||
'namespace' => filled($resource) ? "{$resourcesNamespace}\\{$resource}\\Widgets" . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : '') : $namespace . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : ''),
|
||||
]);
|
||||
} elseif ($this->option('stats-overview')) {
|
||||
$this->copyStubToApp('StatsOverviewWidget', $path, [
|
||||
'class' => $widgetClass,
|
||||
'namespace' => filled($resource) ? "App\\Filament\\Resources\\{$resource}\\Widgets" . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : '') : 'App\\Filament\\Widgets' . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : ''),
|
||||
'namespace' => filled($resource) ? "{$resourcesNamespace}\\{$resource}\\Widgets" . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : '') : $namespace . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : ''),
|
||||
]);
|
||||
} else {
|
||||
$this->copyStubToApp('Widget', $path, [
|
||||
'class' => $widgetClass,
|
||||
'namespace' => filled($resource) ? "App\\Filament\\Resources\\{$resource}\\Widgets" . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : '') : 'App\\Filament\\Widgets' . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : ''),
|
||||
'namespace' => filled($resource) ? "{$resourcesNamespace}\\{$resource}\\Widgets" . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : '') : $namespace . ($widgetNamespace !== '' ? "\\{$widgetNamespace}" : ''),
|
||||
'view' => $view,
|
||||
]);
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace {{ namespace }};
|
||||
|
||||
use App\Filament\Resources\{{ resource }};
|
||||
use {{ resource }};
|
||||
use {{ baseResourcePage }};
|
||||
|
||||
class {{ resourcePageClass }} extends {{ baseResourcePageClass }}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
namespace {{ namespace }};
|
||||
|
||||
use App\Filament\Resources\{{ resource }}\Pages;
|
||||
use App\Filament\Resources\{{ resource }}\RelationManagers;
|
||||
use {{ resource }}\Pages;
|
||||
use {{ resource }}\RelationManagers;
|
||||
use App\Models\{{ model }};
|
||||
use Filament\Forms;
|
||||
use Filament\Resources\Form;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace {{ namespace }};
|
||||
|
||||
use App\Filament\Resources\{{ resource }};
|
||||
use {{ resource }};
|
||||
use Filament\Pages\Actions;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace {{ namespace }};
|
||||
|
||||
use App\Filament\Resources\{{ resource }};
|
||||
use {{ resource }};
|
||||
use Filament\Pages\Actions;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace {{ namespace }};
|
||||
|
||||
use App\Filament\Resources\{{ resource }};
|
||||
use {{ resource }};
|
||||
use Filament\Pages\Actions;
|
||||
use Filament\Resources\Pages\ManageRecords;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace {{ namespace }};
|
||||
|
||||
use App\Filament\Resources\{{ resource }};
|
||||
use {{ resource }};
|
||||
use Filament\Pages\Actions;
|
||||
use {{ baseResourcePage }};
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace {{ namespace }};
|
||||
|
||||
use App\Filament\Resources\{{ resource }};
|
||||
use {{ resource }};
|
||||
use Filament\Pages\Actions;
|
||||
use Filament\Resources\Pages\ViewRecord;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user