CakePHP: дополнительные данные поля выбора (из связанной модели), добавленные к существующей опции выбора - PullRequest
0 голосов
/ 08 февраля 2011

Пока что я не думаю, что это возможно, так как я был на нем уже 3,5 часа. Не повезло.

У меня есть форма.

У меня есть поле выбора (с вариантами выбора, конечно), которое я хочу отображать связанные данные рядом с элементами выбора.

Например:

В моей форме добавления плана у меня есть поле выбора под названием Сведения о плане. Сведения о плане (модель) имеют примечание о плане (модель) (PlanDetailNote принадлежит PlanDetail), которое связано. Другими словами, каждая деталь плана имеет примечание об этом в таблице plan_detail_notes.

Я хочу знать, возможно ли с помощью cakephp по-человечески отобразить это так:

Выберите детали плана:
[Детализация плана 1] - [Детализация плана]
[Детализация плана 2] - [Детализация плана]
[Детализация плана 3] - [Детализация плана]
[Детализация плана 4] - [Детализация плана]

Как вы можете видеть, примечание добавляется к обычному варианту выбора, НО только статичен только для просмотра - его не нужно сохранять.

Возможно ли это с CakePHP?

Ответы [ 4 ]

2 голосов
/ 08 февраля 2011

просто еще одна мысль, если вы на самом деле хотите

<select>
  <option value="1">[Plan Detail Option 1] - [Plan Detail Note]</option>  
  <option value="2">[Plan Detail Option 2] - [Plan Detail Note]</option>
  ...
  <option value="N">[Plan Detail Option N] - [Plan Detail Note]</option>
</select>

Тогда вы можете вручную создать список с помощью запроса getAll (при условии, что отношения созданы правильно)контроллер]

$plans_list = array();
$plans = $this->Plan->findAll();
foreach($plans as $row) {
    $plans_list["{$row['Plan']['id']}"] = "{$row['Plan']['name']} - {$row['PlanDetail']['note']}";
  }
$this->set('plans_list', $plans_list);

[и затем в поле зрения]

<?php echo $form->select('Plan.id', $plans_list); ?>
0 голосов
/ 08 февраля 2011

zeroSkills,

Исходя из вашей концепции, я смог заставить ее работать с некоторыми корректировками.Вот что я сделал:

В add.ctp (просмотр)

...

echo $this->Form->select('plan_detail_id',$plans_list);

...

В функции add() (в plan_controller.php)

...

$plans_list = array();
$plans = $this->Plan->PlanDetail->find('all');
foreach ($plans as $row) {
    $plans_list["{$row['PlanDetail']['id']}"] = "{$row['PlanDetail']['name']} - {$row['PlanDetailNote']['name']}";
}
$this->set('plans_list', $plans_list);
}

...

Мне даже не нужно было связываться с моей моделью, которая была облегчением!

Вот ссылка на пример вывода опции:

http://prntscr.com/1jmid

Как вы можете видеть, я добавил «до 65» или «старше 65»"на основе значения связанной таблицы PlanDetailNote.

0 голосов
/ 08 февраля 2011

звучит так, как будто вы хотите отобразить примечание к плану в виде текста в блоке рядом с полем выбора.Когда вы выбираете опцию, вы хотите, чтобы текст в div обновлялся до примечания с подробным описанием плана для выбранной опции.

Если это именно то, чего вы хотите, то это потребует некоторой работы с ajax.в основном вы будете наблюдать поле вашего поля выбора для события onChange.Это событие обновит innerHtml элемента div с вашей запиской с подробным описанием плана.

Я хотел бы сохранить примечания с подробным описанием плана в виде массива или объекта javascript, затем в onChange установите для div innerHtml значение в массиве javascript.

0 голосов
/ 08 февраля 2011

Не работали с Cake какое-то время, но не могли бы вы добавить приложение «Сведения о плане» в свой контроллер сведений о плане до его отправки в представление?

...