php - Doctrine 2 - Magic getter on an ObjectSelect element using Zend Form -


when populating form element zend form using doctrines' objectselect, property parameter expects getpropertyname() method within corresponding entity.

instead of creating getters each protected property within entity, able tell objectselect use magic getter, e.x. __get('propertyname')?

reason being if table has +100 columns, supposed create getters each, or can use magic getter populate form elements?

entity

namespace users\entity;  use doctrine\orm\mapping orm;  /**  * @orm\entity  * @orm\table(name="tbl_users")  * @property int $id  * @property string $firstname  */  class user{      /**      * @orm\id      * @orm\column(type="integer");      * @orm\generatedvalue(strategy="auto")      */     protected $id;      /**      * @orm\column(type="string")      */     protected $firstname;      /**      * exposes protected properties      *      * @param string $prop      */     public function __get($prop){         return $this->$prop;     }      /**      * saves protected properties      *      * @param string $prop      * @param mixed $val      */     public function __set($prop, $val){         $this->$prop = $val;     } } 

form

namespace users\form;  use zend\form\form;  use doctrinemodule\stdlib\hydrator\doctrineobject doctrinehydrator; use doctrinemodule\persistence\objectmanagerawareinterface; use doctrine\common\persistence\objectmanager; use doctrine\orm\entitymanager;  class userform extends form implements objectmanagerawareinterface{      protected $em;      public function __construct(entitymanager $em, $name = null){      parent::__construct('edit user');      $hydrator = new doctrinehydrator($em, 'users\entity\user');     $this->sethydrator($hydrator);      $this->add(array(         'type' => 'doctrinemodule\form\element\objectselect',         'name' => 'firstname',         'options' => array(             'object_manager' => $em,             'target_class' => 'users\entity\user',             'property' => 'firstname'         )     )); } 

since went unanswered, believe trick set "byvalue" false in doctrinehydrator constructor.

$hydrator = new doctrinehydrator($em, 'users\entity\user', false); 

by default byvalue true , instructs doctrine use getproperty() methods.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -