File tree Expand file tree Collapse file tree 6 files changed +40
-3
lines changed Expand file tree Collapse file tree 6 files changed +40
-3
lines changed Original file line number Diff line number Diff line change @@ -94,6 +94,7 @@ In `app/Nova/Templates/StandardTemplate.php`
9494
9595namespace App\Nova\Templates;
9696
97+ use Laravel\Nova\Fields\Date;
9798use Laravel\Nova\Fields\Trix;
9899use Novius\LaravelNovaPageManager\Templates\AbstractPageTemplate;
99100
@@ -112,12 +113,31 @@ class StandardTemplate extends AbstractPageTemplate
112113 public function fields(): array
113114 {
114115 return [
115- Trix::make(trans('laravel-nova-page-manager::template.field_content'), 'content'),
116+ Trix::make('Content', 'content'),
117+ Date::make('Date', 'date'),
118+ ];
119+ }
120+
121+ public function casts() : array
122+ {
123+ return [
124+ 'date' => 'date',
116125 ];
117126 }
118127}
119128```
120129
130+ Pour utiliser les champs spécifique du template :
131+
132+ ``` php
133+ $page = \Novius\LaravelNovaPageManager\Models\Page::where('template', 'standard')->first();
134+
135+ $content = $page->extras['content'];
136+
137+ // Date will be a Carbon instance, thanks to the cast
138+ $date = $page->extras['date'];
139+ ```
140+
121141## Lint
122142
123143Run php-cs with:
Original file line number Diff line number Diff line change 1919 "illuminate/support" : " ^10.0|^11.0" ,
2020 "laravel/nova" : " ^4.0" ,
2121 "novius/laravel-linkable" : " ^1.0" ,
22+ "novius/laravel-json-casted" : " ^1.0.0" ,
2223 "novius/laravel-meta" : " ^1.0" ,
2324 "novius/laravel-nova-field-preview" : " ^2.0" ,
2425 "novius/laravel-nova-publishable" : " ^3.0" ,
Original file line number Diff line number Diff line change @@ -9,4 +9,6 @@ public function templateUniqueKey(): string;
99 public function templateName (): string ;
1010
1111 public function fields (): array ;
12+
13+ public function casts (): array ;
1214}
Original file line number Diff line number Diff line change @@ -28,7 +28,7 @@ public static function getTemplates(?Resource $resource = null): Collection
2828 })->filter ();
2929 }
3030
31- public static function getTemplate (string $ templateKey , Resource $ resource ): ?AbstractPageTemplate
31+ public static function getTemplate (string $ templateKey , ? Resource $ resource = null ): ?AbstractPageTemplate
3232 {
3333 $ template = static ::getTemplates ($ resource )->firstWhere ('templateKey ' , $ templateKey );
3434 if (empty ($ template )) {
Original file line number Diff line number Diff line change 1111use Illuminate \Support \Arr ;
1212use Illuminate \Support \Carbon ;
1313use Illuminate \Support \Str ;
14+ use Novius \LaravelJsonCasted \Casts \JsonWithCasts ;
1415use Novius \LaravelLinkable \Configs \LinkableConfig ;
1516use Novius \LaravelLinkable \Traits \Linkable ;
1617use Novius \LaravelMeta \Enums \IndexFollow ;
1718use Novius \LaravelMeta \MetaModelConfig ;
1819use Novius \LaravelMeta \Traits \HasMeta ;
20+ use Novius \LaravelNovaPageManager \Helpers \TemplatesHelper ;
1921use Novius \LaravelPublishable \Enums \PublicationStatus ;
2022use Novius \LaravelPublishable \Traits \Publishable ;
2123use Novius \LaravelTranslatable \Traits \Translatable ;
@@ -76,7 +78,7 @@ class Page extends Model
7678 protected $ guarded = ['id ' ];
7779
7880 protected $ casts = [
79- 'extras ' => ' json ' ,
81+ 'extras ' => JsonWithCasts::class. ' :getExtrasCasts ' ,
8082 ];
8183
8284 /**
@@ -159,6 +161,13 @@ public function linkableConfig(): LinkableConfig
159161 return $ this ->_linkableConfig ;
160162 }
161163
164+ public function getExtrasCasts (): array
165+ {
166+ $ template = $ this ->template ? TemplatesHelper::getTemplate ($ this ->template ) : null ;
167+
168+ return $ template ?->casts() ?? [];
169+ }
170+
162171 protected function seoCanonicalUrl (): Attribute
163172 {
164173 return Attribute::make (
Original file line number Diff line number Diff line change @@ -13,4 +13,9 @@ public function __construct(?Resource $resource = null)
1313 {
1414 $ this ->resource = $ resource ;
1515 }
16+
17+ public function casts (): array
18+ {
19+ return [];
20+ }
1621}
You can’t perform that action at this time.
0 commit comments