gleber1
@gleber1

Какой лучше паттерн для вывода между собой связанных данных использовать?

Функции из laravel , но вопрос в целом и касается любых других фреймворков, шаблонизаторов и даже просто вывода кучи информации в DOM или еще куда то.
//Переменные чтобы не путать взял ABC
$ItemA=A::findOrFail($id);//Основная информация , будет выведена на форме(item A) например массив id name date
$selectedB=[];//Выбранные b айтемы например массив id name types A_id и C_Id
$B=$ItemA->GetB;//Кто знает ларавел те поймут там так реализованы связи, если не говорить о laravel то просто по A item(его id) берем B привязанные массив id name types A_id C_id из них и строится selected
$BTypes=['BtypeOne','BtypeTwo'];//упрощенно массив типов существующих
$C=C:All();
//Как следует напряжем сервер
foreach($B as $el){
            foreach($BTypes as $type){
                if($el->type==$type){
                    $selectedB[$el->C_id][$type]=$el;
                }
            }
        }

Вывожу
Внимание слабонервным отойти от экрана и отвезти детей 18+

// На примере шаблонизатора БЛЭЙД. НО вопрос в целом о выводе о лучшем паттерне для этого
//ItemA
<div class="form-group">
        <label>Timing</label>
        {{Form::text('name',null,array('required' => 'required','class'=>'form-control'))}}
    </div>
и так далее все что на форму а идет для редактирования кароче просто А само

//Внимание кульминация
@foreach($BTypes as $BType)
            @foreach($B as $b)
             <input 
                       name="B[{{$c->id}}][BId]"
                        value="{{isset($selectedB[$C->id][$BType['id'])?
                        $selectedB[$C->id][$BType]['id']:'null'}}">
ну и так далее
             @endforeach
@endforeach
  • Вопрос задан
  • 373 просмотра
Решения вопроса 1
AmdY
@AmdY
PHP и прочие вебштучки
laravelcollective.com/docs/5.0/html#form-model-binding
echo Form::model($ItemA); // прибиндили модель
echo Form::select('GetB', C:All()); // для списка используется результат C::all(), а чекнутые возьмутся из поля GetB модели $ItemA

p.s. Используйте нормальные имена переменных, а то ваши вопросы читать невозможно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы