Implement default data functionality for templates: Added 'default_data' field to HeaderTemplate, FooterTemplate, and SectionTemplate models. Enhanced TemplateService to generate dynamic fields based on this new data. Updated form schemas in template forms to include sections for default values, improving template management and usability. Added localization support for new fields in both English and Turkish.

This commit is contained in:
Ümit Tunç
2025-11-01 02:01:07 -03:00
parent c5e09296a4
commit 0d23c20f85
18 changed files with 335 additions and 23 deletions
+15 -1
View File
@@ -85,6 +85,10 @@ $table
DeleteBulkAction::make(), DeleteBulkAction::make(),
]), ]),
]); ]);
// Utilities (Schema içinde kullanım)
use Filament\Schemas\Components\Utilities\Get; // ✅ Doğru - Form state okuma
use Filament\Schemas\Components\Utilities\Set; // ✅ Doğru - Form state yazma
``` ```
#### **Form & Schema Components (DOĞRU):** #### **Form & Schema Components (DOĞRU):**
@@ -103,6 +107,7 @@ use Filament\Schemas\Components\Section; // ✅ Doğru
use Filament\Schemas\Components\Grid; // ✅ Doğru use Filament\Schemas\Components\Grid; // ✅ Doğru
use Filament\Schemas\Components\Fieldset; // ✅ Doğru use Filament\Schemas\Components\Fieldset; // ✅ Doğru
use Filament\Schemas\Components\Flex; // ✅ Doğru use Filament\Schemas\Components\Flex; // ✅ Doğru
use Filament\Schemas\Components\Group; // ✅ Doğru - Schema içinde gruplamak için
// Tabs components (ÖNEMLİ: Schemas namespace!) // Tabs components (ÖNEMLİ: Schemas namespace!)
use Filament\Schemas\Components\Tabs; // ✅ Doğru use Filament\Schemas\Components\Tabs; // ✅ Doğru
@@ -189,8 +194,11 @@ public static function form(Schema $schema): Schema
use Filament\Tables\Actions\EditAction; // ❌ use Filament\Tables\Actions\EditAction; // ❌
use Filament\Forms\Components\Section; // ❌ use Filament\Forms\Components\Section; // ❌
use Filament\Forms\Components\Grid; // ❌ use Filament\Forms\Components\Grid; // ❌
use Filament\Forms\Components\Group; // ❌ Forms namespace altında Group YOK
use Filament\Forms\Components\Tabs; // ❌ Forms namespace altında Tabs YOK use Filament\Forms\Components\Tabs; // ❌ Forms namespace altında Tabs YOK
use Filament\Resources\Components\Tab; // ❌ Bu class hiç YOK use Filament\Resources\Components\Tab; // ❌ Bu class hiç YOK
use Filament\Forms\Get; // ❌ Bu namespace YOK
use Filament\Forms\Set; // ❌ Bu namespace YOK
// ❌ YANLIŞ - Eski metod adları // ❌ YANLIŞ - Eski metod adları
$table $table
@@ -204,11 +212,17 @@ $table
- ✅ **Table Filters:** `Filament\Tables\Filters\` namespace - ✅ **Table Filters:** `Filament\Tables\Filters\` namespace
- ✅ **Form Inputs:** `Filament\Forms\Components\` namespace - ✅ **Form Inputs:** `Filament\Forms\Components\` namespace
- ✅ **Layout Components:** `Filament\Schemas\Components\` namespace - ✅ **Layout Components:** `Filament\Schemas\Components\` namespace
- Section, Grid, Fieldset, Flex, Group, Tabs, View vb.
- ✅ **Tabs (Tüm Kullanımlar):** `Filament\Schemas\Components\Tabs\Tab` (Her yerde bu!) - ✅ **Tabs (Tüm Kullanımlar):** `Filament\Schemas\Components\Tabs\Tab` (Her yerde bu!)
- ✅ **Utilities:** `Filament\Schemas\Components\Utilities\` namespace
- Get, Set (Schema içinde form state okuma/yazma)
- ✅ **Infolist Entries:** `Filament\Infolists\Components\` namespace - ✅ **Infolist Entries:** `Filament\Infolists\Components\` namespace
- ✅ **Table Methods:** `->recordActions()` ve `->toolbarActions()` - ✅ **Table Methods:** `->recordActions()` ve `->toolbarActions()`
**Önemli Not:** Filament 4.x'te `Filament\Resources\Components\Tab` diye bir class **YOK**. Tüm tab kullanımları `Filament\Schemas\Components\Tabs\Tab` ile yapılır! **Kritik Notlar:**
- `Filament\Resources\Components\Tab` diye bir class **YOK**. Tüm tab kullanımları `Filament\Schemas\Components\Tabs\Tab` ile yapılır!
- `Filament\Forms\Components\Group` diye bir class **YOK**. Schema içinde gruplamak için `Filament\Schemas\Components\Group` kullan!
- `Filament\Forms\Get` ve `Filament\Forms\Set` diye class'lar **YOK**. `Filament\Schemas\Components\Utilities\Get` ve `Filament\Schemas\Components\Utilities\Set` kullan!
#### **Filament 4.x REPEATER KULLANIM KURALLARI (KRİTİK!):** #### **Filament 4.x REPEATER KULLANIM KURALLARI (KRİTİK!):**
@@ -2,10 +2,14 @@
namespace App\Filament\Admin\Resources\FooterTemplates\Schemas; namespace App\Filament\Admin\Resources\FooterTemplates\Schemas;
use App\Models\FooterTemplate;
use App\Services\TemplateService;
use Filament\Forms\Components\CodeEditor; use Filament\Forms\Components\CodeEditor;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle; use Filament\Forms\Components\Toggle;
use Filament\Schemas\Components\Group;
use Filament\Schemas\Components\Section; use Filament\Schemas\Components\Section;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Components\View; use Filament\Schemas\Components\View;
use Filament\Schemas\Schema; use Filament\Schemas\Schema;
use Filament\Forms\Components\CodeEditor\Enums\Language; use Filament\Forms\Components\CodeEditor\Enums\Language;
@@ -51,6 +55,38 @@ class FooterTemplateForm
->inline(false), ->inline(false),
]) ])
->columnSpanFull(), ->columnSpanFull(),
// Default Data Section - Dynamic fields based on placeholders
Section::make(__('footer-templates.section_default_data'))
->description(__('footer-templates.section_default_data_desc'))
->schema([
Group::make()
->schema(function (Get $get, $record): array {
$htmlContent = $get('html_content');
if (empty($htmlContent)) {
return [];
}
// Create a temporary template object to parse placeholders
$tempTemplate = new FooterTemplate();
$tempTemplate->html_content = $htmlContent;
// Get existing default_data if editing
$existingData = $record ? ($record->default_data ?? []) : [];
return TemplateService::generateDynamicFields(
$tempTemplate,
'default_data',
$existingData
);
})
->key('default_data_fields')
->visible(fn (Get $get): bool => filled($get('html_content')))
->columnSpanFull(),
])
->columnSpanFull()
->collapsible(true)
->collapsed(false),
]); ]);
} }
} }
@@ -2,10 +2,14 @@
namespace App\Filament\Admin\Resources\HeaderTemplates\Schemas; namespace App\Filament\Admin\Resources\HeaderTemplates\Schemas;
use App\Models\HeaderTemplate;
use App\Services\TemplateService;
use Filament\Forms\Components\CodeEditor; use Filament\Forms\Components\CodeEditor;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle; use Filament\Forms\Components\Toggle;
use Filament\Schemas\Components\Group;
use Filament\Schemas\Components\Section; use Filament\Schemas\Components\Section;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Components\View; use Filament\Schemas\Components\View;
use Filament\Schemas\Schema; use Filament\Schemas\Schema;
use Filament\Forms\Components\CodeEditor\Enums\Language; use Filament\Forms\Components\CodeEditor\Enums\Language;
@@ -50,6 +54,38 @@ class HeaderTemplateForm
->inline(false), ->inline(false),
]) ])
->columnSpanFull(), ->columnSpanFull(),
// Default Data Section - Dynamic fields based on placeholders
Section::make(__('header-templates.section_default_data'))
->description(__('header-templates.section_default_data_desc'))
->schema([
Group::make()
->schema(function (Get $get, $record): array {
$htmlContent = $get('html_content');
if (empty($htmlContent)) {
return [];
}
// Create a temporary template object to parse placeholders
$tempTemplate = new HeaderTemplate();
$tempTemplate->html_content = $htmlContent;
// Get existing default_data if editing
$existingData = $record ? ($record->default_data ?? []) : [];
return TemplateService::generateDynamicFields(
$tempTemplate,
'default_data',
$existingData
);
})
->key('default_data_fields')
->visible(fn (Get $get): bool => filled($get('html_content')))
->columnSpanFull(),
])
->columnSpanFull()
->collapsible(true)
->collapsed(false),
]); ]);
} }
} }
@@ -542,14 +542,43 @@ class PageForm
->options(HeaderTemplate::where('is_active', true)->pluck('title', 'id')) ->options(HeaderTemplate::where('is_active', true)->pluck('title', 'id'))
->searchable() ->searchable()
->live() ->live()
->afterStateUpdated(fn (Set $set) => $set('header_data', [])) ->afterStateUpdated(function (Set $set, Get $get, $state, $record) {
$template = HeaderTemplate::find($state);
if ($template && $template->default_data) {
// If page doesn't have header_data or it's empty, load defaults
$currentData = $record ? ($record->header_data ?? []) : ($get('header_data') ?? []);
if (empty($currentData)) {
$set('header_data', $template->default_data);
}
} else {
// If no template selected or no defaults, clear data
if (!$record || empty($record->header_data)) {
$set('header_data', []);
}
}
})
->columnSpanFull(), ->columnSpanFull(),
Group::make() Group::make()
->schema(fn (Get $get): array => TemplateService::generateDynamicFields( ->schema(function (Get $get, $record): array {
HeaderTemplate::find($get('header_template_id')), $template = HeaderTemplate::find($get('header_template_id'));
'header_data' if (!$template) {
)) return [];
}
// Get page's header_data or template's default_data
$pageData = $record ? ($record->header_data ?? []) : ($get('header_data') ?? []);
$templateDefaults = $template->default_data ?? [];
// Merge: page data overrides template defaults
$mergedData = array_merge($templateDefaults, $pageData);
return TemplateService::generateDynamicFields(
$template,
'header_data',
$mergedData
);
})
->visible(fn (Get $get): bool => filled($get('header_template_id'))) ->visible(fn (Get $get): bool => filled($get('header_template_id')))
->columnSpanFull(), ->columnSpanFull(),
]) ])
@@ -569,13 +598,38 @@ class PageForm
->searchable() ->searchable()
->live() ->live()
->required() ->required()
->afterStateUpdated(function (Set $set, Get $get, $state, $record) {
$template = SectionTemplate::find($state);
if ($template && $template->default_data) {
// If section doesn't have section_data or it's empty, load defaults
$currentData = $get('section_data') ?? [];
if (empty($currentData)) {
$set('section_data', $template->default_data);
}
}
})
->columnSpanFull(), ->columnSpanFull(),
Group::make() Group::make()
->schema(fn (Get $get): array => TemplateService::generateDynamicFields( ->schema(function (Get $get): array {
SectionTemplate::find($get('section_template_id')), $template = SectionTemplate::find($get('section_template_id'));
'section_data' if (!$template) {
)) return [];
}
// Get section's data or template's default_data
$sectionData = $get('section_data') ?? [];
$templateDefaults = $template->default_data ?? [];
// Merge: section data overrides template defaults
$mergedData = array_merge($templateDefaults, $sectionData);
return TemplateService::generateDynamicFields(
$template,
'section_data',
$mergedData
);
})
->visible(fn (Get $get): bool => filled($get('section_template_id'))) ->visible(fn (Get $get): bool => filled($get('section_template_id')))
->columnSpanFull(), ->columnSpanFull(),
]) ])
@@ -600,14 +654,43 @@ class PageForm
->options(FooterTemplate::where('is_active', true)->pluck('title', 'id')) ->options(FooterTemplate::where('is_active', true)->pluck('title', 'id'))
->searchable() ->searchable()
->live() ->live()
->afterStateUpdated(fn (Set $set) => $set('footer_data', [])) ->afterStateUpdated(function (Set $set, Get $get, $state, $record) {
$template = FooterTemplate::find($state);
if ($template && $template->default_data) {
// If page doesn't have footer_data or it's empty, load defaults
$currentData = $record ? ($record->footer_data ?? []) : ($get('footer_data') ?? []);
if (empty($currentData)) {
$set('footer_data', $template->default_data);
}
} else {
// If no template selected or no defaults, clear data
if (!$record || empty($record->footer_data)) {
$set('footer_data', []);
}
}
})
->columnSpanFull(), ->columnSpanFull(),
Group::make() Group::make()
->schema(fn (Get $get): array => TemplateService::generateDynamicFields( ->schema(function (Get $get, $record): array {
FooterTemplate::find($get('footer_template_id')), $template = FooterTemplate::find($get('footer_template_id'));
'footer_data' if (!$template) {
)) return [];
}
// Get page's footer_data or template's default_data
$pageData = $record ? ($record->footer_data ?? []) : ($get('footer_data') ?? []);
$templateDefaults = $template->default_data ?? [];
// Merge: page data overrides template defaults
$mergedData = array_merge($templateDefaults, $pageData);
return TemplateService::generateDynamicFields(
$template,
'footer_data',
$mergedData
);
})
->visible(fn (Get $get): bool => filled($get('footer_template_id'))) ->visible(fn (Get $get): bool => filled($get('footer_template_id')))
->columnSpanFull(), ->columnSpanFull(),
]) ])
@@ -2,10 +2,14 @@
namespace App\Filament\Admin\Resources\SectionTemplates\Schemas; namespace App\Filament\Admin\Resources\SectionTemplates\Schemas;
use App\Models\SectionTemplate;
use App\Services\TemplateService;
use Filament\Forms\Components\CodeEditor; use Filament\Forms\Components\CodeEditor;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle; use Filament\Forms\Components\Toggle;
use Filament\Schemas\Components\Group;
use Filament\Schemas\Components\Section; use Filament\Schemas\Components\Section;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Components\View; use Filament\Schemas\Components\View;
use Filament\Schemas\Schema; use Filament\Schemas\Schema;
use Filament\Forms\Components\CodeEditor\Enums\Language; use Filament\Forms\Components\CodeEditor\Enums\Language;
@@ -50,6 +54,38 @@ class SectionTemplateForm
->inline(false), ->inline(false),
]) ])
->columnSpanFull(), ->columnSpanFull(),
// Default Data Section - Dynamic fields based on placeholders
Section::make(__('section-templates.section_default_data'))
->description(__('section-templates.section_default_data_desc'))
->schema([
Group::make()
->schema(function (Get $get, $record): array {
$htmlContent = $get('html_content');
if (empty($htmlContent)) {
return [];
}
// Create a temporary template object to parse placeholders
$tempTemplate = new SectionTemplate();
$tempTemplate->html_content = $htmlContent;
// Get existing default_data if editing
$existingData = $record ? ($record->default_data ?? []) : [];
return TemplateService::generateDynamicFields(
$tempTemplate,
'default_data',
$existingData
);
})
->key('default_data_fields')
->visible(fn (Get $get): bool => filled($get('html_content')))
->columnSpanFull(),
])
->columnSpanFull()
->collapsible(true)
->collapsed(false),
]); ]);
} }
} }
+24 -4
View File
@@ -67,18 +67,28 @@ class PageController extends Controller
// Render Header Template // Render Header Template
$renderedHeader = null; $renderedHeader = null;
if ($page->headerTemplate) { if ($page->headerTemplate) {
// Merge template defaults with page data (page data overrides defaults)
$templateDefaults = $page->headerTemplate->default_data ?? [];
$pageData = $page->header_data ?? [];
$mergedHeaderData = array_merge($templateDefaults, $pageData);
$renderedHeader = TemplateService::replacePlaceholders( $renderedHeader = TemplateService::replacePlaceholders(
$page->headerTemplate->html_content, $page->headerTemplate->html_content,
$page->header_data ?? [] $mergedHeaderData
); );
} }
// Render Footer Template // Render Footer Template
$renderedFooter = null; $renderedFooter = null;
if ($page->footerTemplate) { if ($page->footerTemplate) {
// Merge template defaults with page data (page data overrides defaults)
$templateDefaults = $page->footerTemplate->default_data ?? [];
$pageData = $page->footer_data ?? [];
$mergedFooterData = array_merge($templateDefaults, $pageData);
$renderedFooter = TemplateService::replacePlaceholders( $renderedFooter = TemplateService::replacePlaceholders(
$page->footerTemplate->html_content, $page->footerTemplate->html_content,
$page->footer_data ?? [] $mergedFooterData
); );
} }
@@ -137,18 +147,28 @@ public function show($slug)
// Render Header Template // Render Header Template
$renderedHeader = null; $renderedHeader = null;
if ($page->headerTemplate) { if ($page->headerTemplate) {
// Merge template defaults with page data (page data overrides defaults)
$templateDefaults = $page->headerTemplate->default_data ?? [];
$pageData = $page->header_data ?? [];
$mergedHeaderData = array_merge($templateDefaults, $pageData);
$renderedHeader = TemplateService::replacePlaceholders( $renderedHeader = TemplateService::replacePlaceholders(
$page->headerTemplate->html_content, $page->headerTemplate->html_content,
$page->header_data ?? [] $mergedHeaderData
); );
} }
// Render Footer Template // Render Footer Template
$renderedFooter = null; $renderedFooter = null;
if ($page->footerTemplate) { if ($page->footerTemplate) {
// Merge template defaults with page data (page data overrides defaults)
$templateDefaults = $page->footerTemplate->default_data ?? [];
$pageData = $page->footer_data ?? [];
$mergedFooterData = array_merge($templateDefaults, $pageData);
$renderedFooter = TemplateService::replacePlaceholders( $renderedFooter = TemplateService::replacePlaceholders(
$page->footerTemplate->html_content, $page->footerTemplate->html_content,
$page->footer_data ?? [] $mergedFooterData
); );
} }
+2
View File
@@ -13,11 +13,13 @@ class FooterTemplate extends Model
protected $fillable = [ protected $fillable = [
'title', 'title',
'html_content', 'html_content',
'default_data',
'is_active', 'is_active',
]; ];
protected $casts = [ protected $casts = [
'is_active' => 'boolean', 'is_active' => 'boolean',
'default_data' => 'array',
]; ];
/** /**
+2
View File
@@ -13,11 +13,13 @@ class HeaderTemplate extends Model
protected $fillable = [ protected $fillable = [
'title', 'title',
'html_content', 'html_content',
'default_data',
'is_active', 'is_active',
]; ];
protected $casts = [ protected $casts = [
'is_active' => 'boolean', 'is_active' => 'boolean',
'default_data' => 'array',
]; ];
/** /**
+2
View File
@@ -12,11 +12,13 @@ class SectionTemplate extends Model
protected $fillable = [ protected $fillable = [
'title', 'title',
'html_content', 'html_content',
'default_data',
'is_active', 'is_active',
]; ];
protected $casts = [ protected $casts = [
'is_active' => 'boolean', 'is_active' => 'boolean',
'default_data' => 'array',
]; ];
/** /**
+11 -1
View File
@@ -16,8 +16,10 @@ class TemplateService
{ {
/** /**
* Generate dynamic form fields based on template placeholders * Generate dynamic form fields based on template placeholders
* For default data (template forms), use dataKey = 'default_data'
* For page data (page forms), use dataKey = 'header_data' or 'footer_data'
*/ */
public static function generateDynamicFields($template, string $dataKey): array public static function generateDynamicFields($template, string $dataKey, ?array $existingData = null): array
{ {
if (!$template) { if (!$template) {
return []; return [];
@@ -37,6 +39,9 @@ class TemplateService
$label = str($name)->title()->replace('_', ' ')->toString(); $label = str($name)->title()->replace('_', ' ')->toString();
// Get existing value from existingData if provided
$existingValue = $existingData[$placeholder] ?? null;
$field = match($type) { $field = match($type) {
// Text Input Variants // Text Input Variants
'text' => TextInput::make("{$dataKey}.{$placeholder}") 'text' => TextInput::make("{$dataKey}.{$placeholder}")
@@ -212,6 +217,11 @@ class TemplateService
->helperText("Unknown type: {$type}"), ->helperText("Unknown type: {$type}"),
}; };
// Set default value if existingValue is provided
if ($existingValue !== null) {
$field->default($existingValue);
}
$fields[] = $field; $fields[] = $field;
} }
+18 -3
View File
@@ -37,9 +37,14 @@ class PageRenderer extends Component
return ''; return '';
} }
// Merge template defaults with page data (page data overrides defaults)
$templateDefaults = $this->page->headerTemplate->default_data ?? [];
$pageData = $this->page->header_data ?? [];
$mergedData = array_merge($templateDefaults, $pageData);
return TemplateService::replacePlaceholders( return TemplateService::replacePlaceholders(
$this->page->headerTemplate->html_content, $this->page->headerTemplate->html_content,
$this->page->header_data ?? [] $mergedData
); );
} }
@@ -55,9 +60,14 @@ class PageRenderer extends Component
continue; continue;
} }
// Merge template defaults with section data (section data overrides defaults)
$templateDefaults = $section['template']->default_data ?? [];
$sectionData = $section['data'] ?? [];
$mergedData = array_merge($templateDefaults, $sectionData);
$output .= TemplateService::replacePlaceholders( $output .= TemplateService::replacePlaceholders(
$section['template']->html_content, $section['template']->html_content,
$section['data'] $mergedData
); );
} }
@@ -73,9 +83,14 @@ class PageRenderer extends Component
return ''; return '';
} }
// Merge template defaults with page data (page data overrides defaults)
$templateDefaults = $this->page->footerTemplate->default_data ?? [];
$pageData = $this->page->footer_data ?? [];
$mergedData = array_merge($templateDefaults, $pageData);
return TemplateService::replacePlaceholders( return TemplateService::replacePlaceholders(
$this->page->footerTemplate->html_content, $this->page->footerTemplate->html_content,
$this->page->footer_data ?? [] $mergedData
); );
} }
} }
@@ -0,0 +1,44 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('header_templates', function (Blueprint $table) {
$table->json('default_data')->nullable()->after('html_content');
});
Schema::table('footer_templates', function (Blueprint $table) {
$table->json('default_data')->nullable()->after('html_content');
});
Schema::table('section_templates', function (Blueprint $table) {
$table->json('default_data')->nullable()->after('html_content');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('header_templates', function (Blueprint $table) {
$table->dropColumn('default_data');
});
Schema::table('footer_templates', function (Blueprint $table) {
$table->dropColumn('default_data');
});
Schema::table('section_templates', function (Blueprint $table) {
$table->dropColumn('default_data');
});
}
};
+2
View File
@@ -9,6 +9,8 @@ return [
// Sections // Sections
'section_general' => 'General Information', 'section_general' => 'General Information',
'section_default_data' => 'Default Values',
'section_default_data_desc' => 'You can enter default values for placeholders when creating templates. These values will be automatically loaded when the template is selected on pages.',
// Form Fields // Form Fields
'field_title' => 'Title', 'field_title' => 'Title',
+2
View File
@@ -9,6 +9,8 @@ return [
// Sections // Sections
'section_general' => 'General Information', 'section_general' => 'General Information',
'section_default_data' => 'Default Values',
'section_default_data_desc' => 'You can enter default values for placeholders when creating templates. These values will be automatically loaded when the template is selected on pages.',
// Form Fields // Form Fields
'field_title' => 'Title', 'field_title' => 'Title',
+2
View File
@@ -9,6 +9,8 @@ return [
// Sections // Sections
'section_general' => 'General Information', 'section_general' => 'General Information',
'section_default_data' => 'Default Values',
'section_default_data_desc' => 'You can enter default values for placeholders when creating templates. These values will be automatically loaded when the template is selected on pages.',
// Form Fields // Form Fields
'field_title' => 'Title', 'field_title' => 'Title',
+2
View File
@@ -9,6 +9,8 @@ return [
// Sections // Sections
'section_general' => 'Genel Bilgiler', 'section_general' => 'Genel Bilgiler',
'section_default_data' => 'Varsayılan Değerler',
'section_default_data_desc' => 'Template oluştururken placeholder\'lar için varsayılan değerleri girebilirsiniz. Bu değerler sayfalarda template seçildiğinde otomatik yüklenecektir.',
// Form Fields // Form Fields
'field_title' => 'Başlık', 'field_title' => 'Başlık',
+2
View File
@@ -9,6 +9,8 @@ return [
// Sections // Sections
'section_general' => 'Genel Bilgiler', 'section_general' => 'Genel Bilgiler',
'section_default_data' => 'Varsayılan Değerler',
'section_default_data_desc' => 'Template oluştururken placeholder\'lar için varsayılan değerleri girebilirsiniz. Bu değerler sayfalarda template seçildiğinde otomatik yüklenecektir.',
// Form Fields // Form Fields
'field_title' => 'Başlık', 'field_title' => 'Başlık',
+2
View File
@@ -9,6 +9,8 @@ return [
// Sections // Sections
'section_general' => 'Genel Bilgiler', 'section_general' => 'Genel Bilgiler',
'section_default_data' => 'Varsayılan Değerler',
'section_default_data_desc' => 'Template oluştururken placeholder\'lar için varsayılan değerleri girebilirsiniz. Bu değerler sayfalarda template seçildiğinde otomatik yüklenecektir.',
// Form Fields // Form Fields
'field_title' => 'Başlık', 'field_title' => 'Başlık',