"]; foreach ($controllers as $name => $object) { if(isset($object->todo)) continue; // routes $routesText[] = "/* SCAF */// $object->slug CRUD"; $routesText[] = "/* SCAF */Route::get ('/$object->slug', '{$name}Controller@index')->name('{$object->slug}-index');"; $routesText[] = "/* SCAF */Route::get ('/$object->slug/{id}', '{$name}Controller@show')->name('{$object->slug}-view');"; $routesText[] = "/* SCAF */Route::get ('/$object->slug/create', '{$name}Controller@create')->name('{$object->slug}-create');"; $routesText[] = "/* SCAF */Route::get ('/$object->slug/update/{id}', '{$name}Controller@update')->name('{$object->slug}-update');"; // left nav links $linksText[] = ''; // controller $template = file_get_contents(base_path('generatecv/controller.template.php')); $text = str_replace("_NAME_", $name, $template); $text = str_replace("_MODEL_", $object->model, $text); $text = str_replace("_SLUG_", $object->slug, $text); // if(!file_exists(app_path("Http/Controllers/{$name}Controller.php"))) { file_put_contents(app_path("Http/Controllers/{$name}Controller.php"), $text); echo "Generated " . app_path("Http/Controllers/{$name}Controller.php") . "\n"; // } // views - index if(isset($object->list)) { $template = file_get_contents(base_path('generatecv/listing.template.blade.php')); $text = str_replace("_NAME_", $object->text, $template); $text = str_replace("_SLUG_", $object->slug, $text); $ths = []; foreach ($object->list as $field => $display) { $ths[] = "{$display}"; } $ths = implode("\n", $ths); $text = str_replace("", $ths, $text); $tds = []; foreach ($object->list as $field => $display) { if($field === 'id') { $tds[] = '' . $field . ' ?>'; } else { $tds[] = '' . $field . ' ?>'; } } $tds = implode("\n", $tds); $text = str_replace("", $tds, $text); // if(!file_exists(resource_path("views/{$object->slug}/index.blade.php"))) { $this->file_force_contents(resource_path("views/{$object->slug}/index.blade.php"), $text); echo "Generated " . resource_path("views/{$object->slug}/index.blade.php") . "\n"; // } } if(isset($object->show)) { $template = file_get_contents(base_path('generatecv/show.template.blade.php')); $dts = []; foreach ($object->show as $field => $display) { $dts[] = "
{$display}
" . '
' . $field . ' ?>
'; } $dts = implode("\n", $dts); $text = str_replace("", $dts, $template); // if(!file_exists(resource_path("views/{$object->slug}/show.blade.php"))) { $this->file_force_contents(resource_path("views/{$object->slug}/show.blade.php"), $text); echo "Generated " . resource_path("views/{$object->slug}/show.blade.php") . "\n"; // } } } // write routes $text = []; $file = fopen(base_path("routes/web.php"), "r"); while (!feof($file)) { $line = rtrim(fgets($file)); if(strpos($line, "/* SCAF */") === FALSE) { $text[] = $line; } } $text = implode("\n", $text); fclose($file); $text = str_replace("/* __SCAFFOLD_ROUTES__ */", implode("\n", $routesText), $text); file_put_contents(base_path("routes/web.php"), $text); echo "Updated " . base_path("routes/web.php") . "\n"; // write left nav links $text = []; $file = fopen(resource_path("views/layouts/pro-logged-in.blade.php"), "r"); while (!feof($file)) { $line = rtrim(fgets($file)); if(strpos($line, "") === FALSE) { $text[] = $line; } } $text = implode("\n", $text); fclose($file); $text = str_replace("", implode("\n", $linksText), $text); file_put_contents(resource_path("views/layouts/pro-logged-in.blade.php"), $text); echo "Updated " . resource_path("views/layouts/pro-logged-in.blade.php") . "\n"; } private function file_force_contents($dir, $contents){ $parts = explode('/', $dir); $file = array_pop($parts); $dir = ''; foreach($parts as $part) if(!is_dir($dir .= "/$part")) mkdir($dir); file_put_contents("$dir/$file", $contents); } }