Doctrine result jako options pro formulář
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Landsman
- Člen | 152
Ahoj,
je nějaký pěkný způsob, jak vytvořit options z doctrine výsledku?
Příklad:
Touto metodou v modelu vytahuji všechny položky z db:
public function findALL() {
return $this->em->createQueryBuilder()->select('c')->from(Cookie::getClassName(), 'c');
}
Poté musím data poskládat do formátu options ve formuláři:
$cookiesList = [];
foreach($this->repository['cookies']->findAll() as $cookie)
{
$cookiesList[$cookie[0]->id] = $cookie[0]->description;
}
$form->addSelect('cookieId', 'Cookie', $cookiesList)
->setPrompt('-')
->setOption('description', 'Při zobrazení stránky uloží cookie se zvolenou hodnotou')
->setDefaultValue($this->entity->cookieId);
Dá se to zapsat hezčeji?
díky
Editoval Landsman (9. 9. 2016 17:46)
- Martk
- Člen | 661
Používáš-li výchozí repozitář od Kdyby/Doctrine, tak takhle:
public function getPairs() {
return $this->findPairs([], 'description', 'id');
}
$form->addSelect('cookieId', 'Cookie', $this->repository['cookies']->getPairs())
->setPrompt('-')
->setOption('description', 'Při zobrazení stránky uloží cookie se zvolenou hodnotou')
->setDefaultValue($this->entity->cookieId);
- Landsman
- Člen | 152
Antik napsal(a):
Používáš-li výchozí repozitář od Kdyby/Doctrine, tak takhle:
public function getPairs() { return $this->findPairs([], 'description', 'id'); }
$form->addSelect('cookieId', 'Cookie', $this->repository['cookies']->getPairs()) ->setPrompt('-') ->setOption('description', 'Při zobrazení stránky uloží cookie se zvolenou hodnotou') ->setDefaultValue($this->entity->cookieId);
To vypadá skvěle! Děkuji!
- iguana007
- Člen | 970
Landsman napsal(a):
Antik napsal(a):
public function getPairs() { return $this->findPairs([], 'description', 'id'); }
Jen by jsem upřesnil odpověď výše (teď jsem řešil totéž a narazil na toto vlákno). Poslední parametr by měl být polem, jinak se řazení neaplikuje. Správně by to tedy mělo být:
public function getPairs() {
return $this->findPairs([], 'description', ['id']);
}