/** * @param Resource $resource * @param null $title * @param null $color * @return mixed */ public static function createWithPages(array $data, $title = null, $color = '#31b0d5') { $resource = Resource::create($data); if (!$title) { $title = $resource->title; } $pages = PageRepository::createResourcePages($title, $resource->controller, null, 'layouts.admin', $color); Event::fire('admin.model.resourceRepository.createWithPages', array($resource, $pages)); return $pages; }
public function boot() { /** * * Get all pages that are in the database. We can't be sure if there is a working database * connection, so put the code in a try/catch. * */ try { foreach (Page::get() as $page) { PageRepository::createRoute($page); } } catch (PDOException $e) { /** * There is probably no database connection yet. We can't get the pages from * the database, so fall back to the original routes in Laravel. * */ } }
/** * @param Model $model * @param CrudController $controller */ public function onSaved(Model $model, CrudController $controller) { // We are only interested in a resource controller if (!$controller instanceof ResourceController) { return; } // Start up the generator $generator = App::make('Boyhagemann\\Crud\\ControllerGenerator'); $generator->setClassName($model->controller); $generator->setModelClass(str_replace('Resource', '', $model->controller)); // Determine the file name $filename = $model->path . '/' . str_replace('\\', '/', $model->controller) . '.php'; // Write the new controller file to the controller folder @mkdir(dirname($filename), 0755, true); file_put_contents($filename, $generator->generate()); // Create the resource pages $pages = PageRepository::createResourcePages($model->title, $model->controller); require_once $filename; // Get the newly create controller and get the modelBuilder // We need to trigger the model generate event so that the model is // actually generated $crud = App::make($model->controller); Event::fire('model.builder.generate', $crud->init('create')->getModelBuilder()); }
/** * @param Model $model */ protected function generatePages(Model $model) { // Determine the controller class name $controller = Str::studly($model->title) . 'Controller'; // Use a layout $layout = 'layouts.default'; $urlIndex = Str::slug($model->title); $aliasIndex = str_replace('.', '', $urlIndex); $urlShow = $urlIndex . '/{id}'; $aliasShow = $urlIndex . '.show'; $zone = 'content'; $method = 'get'; PageRepository::createWithContent($model->title, $urlIndex, $controller . '@index', $layout, $method, $aliasIndex); PageRepository::createWithContent($model->title, $urlShow, $controller . '@show', $layout, $method, $aliasShow); Block::create(array('title' => sprintf('List %s items', $model->title), 'controller' => $controller . '@index')); Block::create(array('title' => sprintf('Show %s', $model->title), 'controller' => $controller . '@show')); }