Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Я, как начинающий ларавельщик, наткнулся на один интересный для себя вопрос.
Как мне из записи в основной таблицы выбрать, какой дополнительный компонент или какие дополнительные данные мне надо будет отображать. Есть какое-нибудь универсальное решение для этого?
Покажу такое решение, знаю, что оно тупое и блейд не умеет парсить x-теги, которые записаны в поле записи.
Какими путями я могу динамически выбрать, какую дополнительную модель можно вызвать?
Схема миграции Page:
public function up()
{
Schema::create('pages', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content')->nullable();
$table->string('tagComponent')->nullable();
$table->timestamps();
});
}
Это шаблон страницы Page
@extends('layouts.app')
@section('content')
<h1>{{$page->title}}</h1>
<div class="container">
<div class="content">
{!! $page->content !!}
</div>
{{-- <x-vacancy/> --}}
{{-- компонент успешно создан и выдает все записи из модели Vacancy, если вызвать его в любом месте верстки--}}
<div>
{!! $page->tagComponent !!} {{-- там выводится <x-vacancy/>, блейд его парсить не будет и выведет как есть --}}
</div>
</div>
@endsection
Или вообще это все фигня, я все слишком усложняю и мне надо просто, грубо говоря,из записи в контроллере выдернуть поле tagComponent и проверять его значение в switch-case-default, который вернет шаблон с заранее определенным нужным компонентом?
Изменено DmitriyLutsenko (10.10.2023 16:38:35)
Не в сети
Делай так, чтобы работало. Ничего плохого в switch нет.
Насколько я понял, ты пытаешься хранить в базе шаблоны. Не то чтобы это было невозможно, но imho это ненужная сложность и есть свои минусы.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети