Как заполнить zend_form из сущности Doctrine2? - PullRequest
2 голосов
/ 10 сентября 2011

Прямо сейчас я заполняю / setDefaults форму zend_form, подобную этой, из контроллера:

 $data = array('user' => $account->getUser(), 
            'password' => $account->getPassword(), 
            'name' => $account->getName());

 $form->setDefaults($data);

Это работает, но швы очень ручной процесс. Есть ли лучший способ сделать это?

Ответы [ 2 ]

4 голосов
/ 11 сентября 2011

Решение, которое я применил, состояло в том, чтобы добавить эту функцию к сущности:

public function toArray ()
{
    return get_object_vars($this);
}

И затем просто:

$form->setDefaults($test->toArray());

Также, если вам нужно сделать это по-другому(массив к объекту) вы можете посмотреть здесь

4 голосов
/ 10 сентября 2011

«Очевидное» решение состоит в том, чтобы каким-то образом разложить объекты в массивы.Это не так сложно сделать, хотя некоторые угловые случаи могут стать уродливыми.

Самая привлекательная (я еще не пробовал, но собираюсь) консервированная реализация, с которой я столкнулся, - this (некоторые документы здесь ).

Он использует отражение, чтобы посмотреть на метаданные сущностей, а затем делает некоторые хорошие предположения о том, какую структуру возвращать.В целом это кажется лучшей стратегией.Я подозреваю, что для обработки необычно структурированных сущностей, вы можете настроить класс Бориса для проверки собственного метода сериализации на сущности и, если он присутствует, позволить сущности сериализовать себя.

...