Pracuję z zf2.1.3 i doktryną 2. Próbowałem nawodnić informacje na temat mojej klasy i zdałem sobie sprawę, że DoctrineModule\Stdlib\Hydrator\DoctrineObject
nie działa z polami, które ją podkreśliły, takimi jak cat_id
.Doctrine 2 Hydrator - pola z podkreśleniem
Oto przykład:
/* namespace Application\Entity; */
class Foo
{
private $cat_id;
private $cat_name;
public function getCatId()
{
return $this->cat_id;
}
public function setCatName($name)
{
$this->cat_name = $name;
return $this;
}
public function getCatName()
{
return $this->cat_nome;
}
}
class Bar
{
private $id;
private $name;
public function getId()
{
return $this->id;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function getName()
{
return $this->nome;
}
}
/* namespace Application\Controller; */
use \DoctrineModule\Stdlib\Hydrator\DoctrineObject;
public function indexAction()
{
$hydrator = new DoctrineObject($this->getEntityManager(), 'Application\Entity\Foo');
$foo = $hydrator->hydrate(array('cat_name' => 'Frank Moraes'), new Foo());
\Zend\Debug\Debug::dump($foo, 'Foo Hydrator');
$hydrator = new DoctrineObject($this->getEntityManager(), 'Application\Entity\Bar');
$bar = $hydrator->hydrate(array('name' => 'Frank Moraes'), new Bar());
\Zend\Debug\Debug::dump($inscrit, 'Bar Hydrator');
}
Ten kod zwraca następujący:
Foo Hydrator
object(Application\Entity\Foo)
private 'cat_id' => null
private 'cat_name' => null
Bar Hydrator
object(Application\Entity\Foo)
private 'id' => null
private 'name' => 'Frank Moraes'
Więc moje pytanie brzmi: Dlaczego Doktryna Hydrator nie działa w dziedzinach, które mają podkreślić w nim? Jak mogę to ułatwić?
Dziękujemy!
Edited
Przepraszamy za długi czas bez odpowiedzi. Nie mam dostępu do SO w mojej pracy!
Próbowałem następujące:
$hydrator = new DoctrineObject($this->getEntityManager(), 'Application\Entity\Foo', false);
Na przykład napisałem tutaj, ten parametr false
działa dobrze.
Ale to nie zadziałało, gdy wiążę klasę w formularzu!
Ktoś ma wskazówkę?
będę pisać to pytanie na doktrynie grupować użytkowników Google. –
To dlatego, że domyślny inflector nie obsługuje znaków podkreślenia. Musisz go poprawić samodzielnie lub opublikować problem w module do śledzenia problemów z modułem doktryny na https://github.com/doctrine/DoctrineModule/issues Mogę Ci teraz powiedzieć, że nie mam czasu szukać w to jednak teraz. – Ocramius
Napisałem problem na https://github.com/doctrine/DoctrineModule/issues/190 – vinigarcia87