You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xshop/app/Console/Commands/makeXcontroller.php

95 lines
3.0 KiB
PHP

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\File;
class makeXcontroller extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'make:xcontroller {model}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'create new xContoller';
/**
* Execute the console command.
*/
public function handle()
{
//
$model = ucfirst($this->argument('model'));
$var = '$' . strtolower($this->argument('model'));
$plural = Str::plural($model);
// check model exists
if (!file_exists(__DIR__.'/../../Models/'.$model.'.php')){
$this->error("Model not found!");
return ;
}
// get controller content
$content = file_get_contents(__DIR__ . '/xcontroller.dat');
// replace variables
$content = str_replace('User', $model, $content);
$content = str_replace('users', strtolower($plural), $content);
$content = str_replace('user', strtolower($model), $content);
$content = str_replace('$user', $var, $content);
Artisan::call('make:request', ['name' => $model.'SaveRequest']);
Artisan::call('make:controller', ['name' => 'Admin/' . $model . 'Controller']);
$model_content = file_get_contents(__DIR__.'/../../Models/'.$model.'.php');
// check soft delete for restore
if (!strpos($model_content,'SoftDeletes')){
$pattern = '/\/\*\*restore\*\/(.*?)\/\*restore\*\*\//s';
$replacement = '';
$content = preg_replace($pattern, $replacement, $content);
}
file_put_contents(__DIR__.'/../../Http/Controllers/Admin/' . $model . 'Controller.php',$content);
$this->info('Admin/' . $model . 'Controller created');
$this->info( $model.'SaveRequest created');
$folderPath = resource_path('views/admin/'.strtolower($plural));
// create view folder
if (!File::exists($folderPath)) {
File::makeDirectory($folderPath);
$this->info('Folder created successfully.');
} else {
$this->info('Folder already exists.');
}
// make list blade
$model = strtolower($model);
$content = file_get_contents(__DIR__ . '/listblade.dat');
$content = str_replace('Users',$plural,$content);
file_put_contents($folderPath.'/'.$model.'-list.blade.php',$content);
$this->info($model.'-list.blade.php created');
// make form blade
$content = file_get_contents(__DIR__ . '/formblade.dat');
$content = str_replace('Users',$plural,$content);
$content = str_replace('user',strtolower($model),$content);
file_put_contents($folderPath.'/'.$model.'-form.blade.php',$content);
$this->info($model.'-form.blade.php created');
}
}