Обработка форм с отношениями в Kohana / MVC - PullRequest
0 голосов
/ 28 сентября 2010

Это вопрос, который у меня возник по поводу работы с платформой Kohana, хотя я думаю, что это может быть применимо к платформам MVC в целом.

Допустим, у меня есть 2 объекта / модели, объект животного и объект фермы, где животное принадлежит ферме, а на ферме много животных. У меня есть форма для создания новых животных, и я хочу иметь выпадающий список, чтобы выбрать, к какой ферме он принадлежит. Мой вопрос заключается в том, как лучше всего получать данные из таблицы фермы и отображать их в форме.

Вот несколько возможных решений, которые я придумал, но я не уверен, что какое-либо из них является лучшим подходом. Кроме того, я планировал использовать вспомогательную библиотеку форм Kohana, но, похоже, она обрабатывает HTML-визуализацию форм:

  1. Получить данные в AnimalModel, передать их контроллеру, который передает их в представление формы. Однако я не уверен, что это обязанность AnimalModel.
  2. Получить данные из FarmModel. Меня беспокоит то, что у чего-то много связей, контроллер должен начать вызывать множество разных контроллеров.
  3. Сохраните все данные, которые передаются различным методам формы в AnimalModel. Это также может включать в себя хранение таких вещей, как классы, что, по-видимому, не должно быть в модели.
  4. Напишите какой-нибудь вспомогательный объект / библиотеку для хранения всех данных формы и сохранения их в модели или, возможно, в контроллере. Опять же, я чувствую, что это приведет к смешению отображения и бизнес-логики, что мне бы очень понравилось.

Еще одна проблема, с которой я столкнулся при проектировании, - это другие вещи, которые приходят с формами, такие как проверка, а также что делать, когда я хочу, чтобы форма находилась в режиме «редактирования», и мне нужно предварительно заполнить ее данными из Модель.

Как лучше всего подходить к написанию форм, связанных с отношениями в Kohana / MVC Frameworks?

1 Ответ

1 голос
/ 28 сентября 2010

Может, я скучаю по твоему вопросу, но кажется, что ты слишком усложняешь вещи.Используйте модель фермы, чтобы получить список всех ваших ферм.Используйте этот список для создания выбора в вашей форме.

<select name="farm">
    <option value="1">Farm 1</option>
    <option value="2">Farm 2</option>
    <option value="3">Farm 3</option>
</select>

Затем, когда вы сохраняете свое животное, у вас есть первичный ключ для фермы, которой оно принадлежит.

$animal = $_POST;
if ( $animal->validate() ) {
    $animal->save(); //saves all your animal data as well as the farm it belongs to.
}
else {
    // show your view and display the animal data
}

ваш взгляд может сделать что-то подобное

<label>Animal Name</label><input type="text" value="<?php echo  $animal->getValue('name') ?>">
...