Enhance placeholder parsing functionality: Updated the TemplateService to support both dot and kebab-case formats for placeholders in HTML content. Improved regex patterns for parsing placeholders and custom blade components, ensuring better flexibility in template customization.
This commit is contained in:
@@ -248,11 +248,11 @@ class TemplateService
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse placeholders from HTML content
|
* Parse placeholders from HTML content
|
||||||
* Format: {type.field_name}
|
* Format: {type.field_name} or {type.field-name}
|
||||||
*/
|
*/
|
||||||
public static function parsePlaceholders(string $html): array
|
public static function parsePlaceholders(string $html): array
|
||||||
{
|
{
|
||||||
preg_match_all('/\{([a-z]+\.[a-z_]+)\}/i', $html, $matches);
|
preg_match_all('/\{([a-z]+\.[a-z][a-z_-]*)\}/i', $html, $matches);
|
||||||
return array_unique($matches[1] ?? []);
|
return array_unique($matches[1] ?? []);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,8 +289,8 @@ class TemplateService
|
|||||||
$html = str_replace('{staticMenu}', $renderedStaticMenu, $html);
|
$html = str_replace('{staticMenu}', $renderedStaticMenu, $html);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle custom blade components: {custom.component_name}
|
// Handle custom blade components: {custom.component_name} or {custom.component-name}
|
||||||
preg_match_all('/\{custom\.([a-z_]+)\}/i', $html, $customMatches);
|
preg_match_all('/\{custom\.([a-z][a-z_-]*)\}/i', $html, $customMatches);
|
||||||
if (!empty($customMatches[0])) {
|
if (!empty($customMatches[0])) {
|
||||||
foreach ($customMatches[0] as $index => $fullMatch) {
|
foreach ($customMatches[0] as $index => $fullMatch) {
|
||||||
$componentName = $customMatches[1][$index] ?? null;
|
$componentName = $customMatches[1][$index] ?? null;
|
||||||
@@ -331,9 +331,9 @@ class TemplateService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// First, parse all placeholders in the format {type.field_name}
|
// First, parse all placeholders in the format {type.field_name} or {type.field-name}
|
||||||
// Exclude custom.* from this regex to avoid double processing
|
// Exclude custom.* from this regex to avoid double processing
|
||||||
preg_match_all('/\{([a-z]+\.[a-z_]+)\}/i', $html, $matches);
|
preg_match_all('/\{([a-z]+\.[a-z][a-z_-]*)\}/i', $html, $matches);
|
||||||
$placeholders = array_unique($matches[1] ?? []);
|
$placeholders = array_unique($matches[1] ?? []);
|
||||||
|
|
||||||
// Filter out custom.* placeholders as they're already handled above
|
// Filter out custom.* placeholders as they're already handled above
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
$currentLanguage = $languages->firstWhere('code', $currentLang);
|
$currentLanguage = $languages->firstWhere('code', $currentLang);
|
||||||
@endphp
|
@endphp
|
||||||
@if($currentLanguage)
|
@if($currentLanguage)
|
||||||
{{ $currentLanguage->flag ?? '' }} {{ strtoupper($currentLanguage->code) }}
|
{{ strtoupper($currentLanguage->code) }}
|
||||||
@else
|
@else
|
||||||
{{ strtoupper($currentLang) }}
|
{{ strtoupper($currentLang) }}
|
||||||
@endif
|
@endif
|
||||||
@@ -21,16 +21,13 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="dropdown-item hover:!text-[#747ed1] {{ $language->code === $currentLang ? 'active' : '' }}"
|
<a class="dropdown-item hover:!text-[#747ed1] {{ $language->code === $currentLang ? 'active' : '' }}"
|
||||||
href="{{ route('language.switch', $language->code) }}">
|
href="{{ route('language.switch', $language->code) }}">
|
||||||
{{ $language->flag ?? '' }} {{ strtoupper($language->code) }}
|
{{ strtoupper($language->code) }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@endforeach
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item"><a class="nav-link" data-bs-toggle="offcanvas" data-bs-target="#offcanvas-info"><i class="uil uil-info-circle before:content-['\eb99'] !text-[1.1rem]"></i></a></li>
|
|
||||||
<li class="nav-item xl:!hidden lg:!hidden">
|
|
||||||
<button class="hamburger offcanvas-nav-btn"><span></span></button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<!-- /.navbar-nav -->
|
<!-- /.navbar-nav -->
|
||||||
</div>
|
</div>
|
||||||
Reference in New Issue
Block a user