header('Scaffold'); $dbTypes = [ 'string', 'integer', 'text', 'float', 'double', 'decimal', 'boolean', 'date', 'time', 'dateTime', 'timestamp', 'char', 'mediumText', 'longText', 'tinyInteger', 'smallInteger', 'mediumInteger', 'bigInteger', 'unsignedTinyInteger', 'unsignedSmallInteger', 'unsignedMediumInteger', 'unsignedInteger', 'unsignedBigInteger', 'enum', 'json', 'jsonb', 'dateTimeTz', 'timeTz', 'timestampTz', 'nullableTimestamps', 'binary', 'ipAddress', 'macAddress', ]; $action = URL::current(); $content->row(view('laravel-admin-helpers::scaffold', compact('dbTypes', 'action'))); }); } public function store(Request $request) { $paths = []; $message = ''; try { // 1. Create model. if (in_array('model', $request->get('create'))) { $modelCreator = new ModelCreator($request->get('table_name'), $request->get('model_name')); $paths['model'] = $modelCreator->create( $request->get('primary_key'), $request->get('timestamps') == 'on', $request->get('soft_deletes') == 'on' ); } // 2. Create controller. if (in_array('controller', $request->get('create'))) { $paths['controller'] = (new ControllerCreator($request->get('controller_name'))) ->create($request->get('model_name')); } // 3. Create migration. if (in_array('migration', $request->get('create'))) { $migrationName = 'create_'.$request->get('table_name').'_table'; $paths['migration'] = (new MigrationCreator(app('files')))->buildBluePrint( $request->get('fields'), $request->get('primary_key', 'id'), $request->get('timestamps') == 'on', $request->get('soft_deletes') == 'on' )->create($migrationName, database_path('migrations'), $request->get('table_name')); } // 4. Run migrate. if (in_array('migrate', $request->get('create'))) { Artisan::call('migrate'); $message = Artisan::output(); } } catch (\Exception $exception) { // Delete generated files if exception thrown. app('files')->delete($paths); return $this->backWithException($exception); } return $this->backWithSuccess($paths, $message); } protected function backWithException(\Exception $exception) { $error = new MessageBag([ 'title' => 'Error', 'message' => $exception->getMessage(), ]); return back()->withInput()->with(compact('error')); } protected function backWithSuccess($paths, $message) { $messages = []; foreach ($paths as $name => $path) { $messages[] = ucfirst($name).": $path"; } $messages[] = "
$message"; $success = new MessageBag([ 'title' => 'Success', 'message' => implode('
', $messages), ]); return back()->with(compact('success')); } }