Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.10.2023 16:32:15

Как из записи выбрать модель, которая вместе должна выводиться?

Я, как начинающий ларавельщик, наткнулся на один интересный для себя вопрос.

Как мне из записи в основной таблицы выбрать, какой дополнительный компонент или какие дополнительные данные мне надо будет отображать. Есть какое-нибудь универсальное решение для этого?

Покажу такое решение, знаю, что оно тупое и блейд не умеет парсить 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)

Не в сети

#2 26.10.2023 09:53:06

Re: Как из записи выбрать модель, которая вместе должна выводиться?

Делай так, чтобы работало. Ничего плохого в switch нет.
Насколько я понял, ты пытаешься хранить в базе шаблоны. Не то чтобы это было невозможно, но imho это ненужная сложность и есть свои минусы.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела