Skip to content

Commit a31276e

Browse files
committed
feat: first working version of blade templates
1 parent cc422e3 commit a31276e

19 files changed

+1287
-322
lines changed

config/laravel_generator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@
136136

137137
'save_schema_file' => true,
138138

139-
'localized' => true,
139+
'localized' => false,
140140

141141
'repository_pattern' => true,
142142

src/Common/GeneratorField.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,16 @@ public static function parseFieldFromFile($fieldInput): self
172172
return $field;
173173
}
174174

175-
public function __get($key)
175+
public function getTitle()
176176
{
177-
if ($key == 'fieldTitle') {
178-
return Str::title(str_replace('_', ' ', $this->name));
179-
}
177+
return Str::title(str_replace('_', ' ', $this->name));
178+
}
180179

181-
return $this->$key;
180+
public function variables()
181+
{
182+
return [
183+
'fieldName' => $this->name,
184+
'fieldTitle' => $this->getTitle(),
185+
];
182186
}
183187
}

src/Generators/Scaffold/ControllerGenerator.php

Lines changed: 22 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -22,59 +22,44 @@ public function __construct()
2222

2323
public function generate()
2424
{
25+
$variables = [];
26+
2527
switch ($this->config->tableType) {
2628
case 'blade':
2729
if ($this->config->options->repositoryPattern) {
28-
$templateName = 'repository.controller';
30+
$viewName = 'repository.controller';
2931
} else {
30-
$templateName = 'model.controller';
31-
}
32-
if ($this->config->isLocalizedTemplates()) {
33-
$templateName .= '_locale';
32+
$viewName = 'model.controller';
3433
}
3534

36-
$templateData = get_template("scaffold.controller.$templateName", 'laravel-generator');
37-
38-
$templateData = str_replace('$RENDER_TYPE$', 'paginate(10)', $templateData);
35+
$variables['renderType'] = 'paginate(10)';
3936
break;
4037

4138
case 'datatables':
4239
if ($this->config->options->repositoryPattern) {
43-
$templateName = 'repository.datatable.controller';
40+
$viewName = 'repository.datatable.controller';
4441
} else {
45-
$templateName = 'model.datatable.controller';
42+
$viewName = 'model.datatable.controller';
4643
}
4744

48-
if ($this->config->isLocalizedTemplates()) {
49-
$templateName .= '_locale';
50-
}
51-
52-
$templateData = get_template("scaffold.controller.$templateName", 'laravel-generator');
53-
5445
$this->generateDataTable();
5546
break;
5647

5748
case 'livewire':
5849
if ($this->config->options->repositoryPattern) {
59-
$templateName = 'repository.livewire.controller';
50+
$viewName = 'repository.livewire.controller';
6051
} else {
61-
$templateName = 'model.livewire.controller';
62-
}
63-
64-
if ($this->config->isLocalizedTemplates()) {
65-
$templateName .= '_locale';
52+
$viewName = 'model.livewire.controller';
6653
}
6754

68-
$templateData = get_template("scaffold.controller.$templateName", 'laravel-generator');
69-
7055
$this->generateLivewireTable();
7156
break;
7257

7358
default:
7459
throw new Exception('Invalid Table Type');
7560
}
7661

77-
$templateData = fill_template($this->config->dynamicVars, $templateData);
62+
$templateData = view('laravel-generator::scaffold.controller.'.$viewName, $variables)->render();
7863

7964
g_filesystem()->createFile($this->path.$this->fileName, $templateData);
8065

@@ -84,20 +69,9 @@ public function generate()
8469

8570
private function generateDataTable()
8671
{
87-
$templateName = 'table.datatable';
88-
if ($this->config->isLocalizedTemplates()) {
89-
$templateName .= '_locale';
90-
}
91-
92-
$templateData = get_template('scaffold.'.$templateName, 'laravel-generator');
93-
94-
$templateData = fill_template($this->config->dynamicVars, $templateData);
95-
96-
$templateData = str_replace(
97-
'$DATATABLE_COLUMNS$',
98-
implode(','.infy_nl_tab(1, 3), $this->generateDataTableColumns()),
99-
$templateData
100-
);
72+
$templateData = view('laravel-generator::scaffold.table.datatable', [
73+
'columns' => implode(','.infy_nl_tab(1, 3), $this->generateDataTableColumns())
74+
])->render();
10175

10276
$path = $this->config->paths->dataTables;
10377

@@ -111,20 +85,9 @@ private function generateDataTable()
11185

11286
private function generateLivewireTable()
11387
{
114-
$templateName = 'table.livewire';
115-
if ($this->config->isLocalizedTemplates()) {
116-
$templateName .= '_locale';
117-
}
118-
119-
$templateData = get_template('scaffold.'.$templateName, 'laravel-generator');
120-
121-
$templateData = fill_template($this->config->dynamicVars, $templateData);
122-
123-
$templateData = str_replace(
124-
'$LIVEWIRE_COLUMNS$',
125-
implode(','.infy_nl_tab(1, 3), $this->generateLivewireTableColumns()),
126-
$templateData
127-
);
88+
$templateData = view('laravel-generator::scaffold.table.livewire', [
89+
'columns' => implode(','.infy_nl_tab(1, 3), $this->generateLivewireTableColumns())
90+
])->render();
12891

12992
$path = $this->config->paths->livewireTables;
13093

@@ -138,38 +101,16 @@ private function generateLivewireTable()
138101

139102
private function generateDataTableColumns(): array
140103
{
141-
$templateName = 'table.datatable.column';
142-
if ($this->config->isLocalizedTemplates()) {
143-
$templateName .= '_locale';
144-
}
145-
$headerFieldTemplate = get_template('scaffold.views.'.$templateName, $this->templateType);
146-
147104
$dataTableColumns = [];
148105
foreach ($this->config->fields as $field) {
149106
if (!$field->inIndex) {
150107
continue;
151108
}
152109

153-
if ($this->config->isLocalizedTemplates() && !$field->isSearchable) {
154-
$headerFieldTemplate = str_replace('$SEARCHABLE$', ",'searchable' => false", $headerFieldTemplate);
155-
}
156-
157-
$fieldTemplate = fill_template_with_field_data(
158-
$this->config->dynamicVars,
159-
['$FIELD_NAME_TITLE$' => 'fieldTitle', '$FIELD_NAME$' => 'name'],
160-
$headerFieldTemplate,
161-
$field
162-
);
163-
164-
if ($field->isSearchable) {
165-
$dataTableColumns[] = $fieldTemplate;
166-
} else {
167-
if ($this->config->isLocalizedTemplates()) {
168-
$dataTableColumns[] = $fieldTemplate;
169-
} else {
170-
$dataTableColumns[] = "'".$field->name."' => ['searchable' => false]";
171-
}
172-
}
110+
$dataTableColumns[] = trim(view(
111+
$this->templateType.'::templates.scaffold.table.datatable.column',
112+
$field->variables()
113+
)->render());
173114
}
174115

175116
return $dataTableColumns;
@@ -184,14 +125,8 @@ private function generateLivewireTableColumns(): array
184125
continue;
185126
}
186127

187-
$fieldTemplate = 'Column::make("$FIELD_NAME_TITLE$", "$FIELD_NAME$")'.PHP_EOL.infy_tabs(4).'->sortable()';
188-
189-
$fieldTemplate = fill_template_with_field_data(
190-
$this->config->dynamicVars,
191-
['$FIELD_NAME_TITLE$' => 'fieldTitle', '$FIELD_NAME$' => 'name'],
192-
$fieldTemplate,
193-
$field
194-
);
128+
$fieldTemplate = 'Column::make("'.$field->getTitle().'", "'.$field->name.'")'.PHP_EOL;
129+
$fieldTemplate .= infy_tabs(4).'->sortable()';
195130

196131
if ($field->isSearchable) {
197132
$fieldTemplate .= PHP_EOL.infy_tabs(4).'->searchable()';

src/Generators/Scaffold/RequestGenerator.php

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ public function generate()
2828

2929
private function generateCreateRequest()
3030
{
31-
$templateData = get_template('scaffold.request.create_request', 'laravel-generator');
32-
33-
$templateData = fill_template($this->config->dynamicVars, $templateData);
31+
$templateData = view('laravel-generator::scaffold.request.create', $this->variables())->render();
3432

3533
g_filesystem()->createFile($this->path.$this->createFileName, $templateData);
3634

@@ -42,11 +40,10 @@ private function generateUpdateRequest()
4240
{
4341
$modelGenerator = new ModelGenerator();
4442
$rules = $modelGenerator->generateUniqueRules();
45-
$this->config->addDynamicVariable('$UNIQUE_RULES$', $rules);
46-
47-
$templateData = get_template('scaffold.request.update_request', 'laravel-generator');
4843

49-
$templateData = fill_template($this->config->dynamicVars, $templateData);
44+
$templateData = view('laravel-generator::scaffold.request.update', [
45+
'uniqueRules' => $rules,
46+
])->render();
5047

5148
g_filesystem()->createFile($this->path.$this->updateFileName, $templateData);
5249

0 commit comments

Comments
 (0)