DependentSelectBox NasExt – naplnění select boxu daty z databáze
- iNyxLadis
- Člen | 48
Ahoj,
snažím se využít doplněk od NasExt DependentSelectBox. Problematika se týká dvou tabulek – Company(Cmp_ID, CmpName1), Project(Prj_ID, PrjName, Cmp_ID) kde Cmp_ID je cizím klíčem. Do prvního selectboxu se mi data načíst podaří. Nevím však, jak naplnit dependentselectbox daty z tabulky Project. Mohl by mě v tomto ohledu někdo poradit? Přikládám část kódu, která se stará o formulář, nevím si rady s tím, jak vlastně poskládat $form->addDependentSelectBox. Snažil jsem se postupovat dle příkladu v dokumentaci, ale tam je to ukázáno na statických datech.
protected function createComponentTimesheetForm()
{
$form = new Form;
$form->addSelect('Cmp_ID', 'Firma', $this->timesheetManager->getCompanyNames()->fetchPairs('Cmp_ID', 'CmpName1'))
->setPrompt('Zolte');
$form->addDependentSelectBox('Prj_ID', 'Projekt', array($form["Cmp_ID"]), function ($values) use () {
$data = new \NasExt\Forms\Controls\DependentSelectBoxData();
})->setPrompt('Zvolte');
$form->addText('TskName', 'Obor zájmu');
$form->addText('TskDescription1', 'Popis úkolu');
$form->addSubmit('submit', 'Uložit');
$form->onSuccess[] = [$this, 'timesheetFormSucceeded'];
return $form;
}
děkuji za ochotu
Editoval iNyxLadis (31. 8. 2016 15:15)
- dave2005
- Backer | 1
Zrovna jsem řešil stejnou věc. Mělo by stačit DependentSelectBox upravit takto:
protected function createComponentTimesheetForm()
{
$form = new Form;
$form->addSelect('Cmp_ID', 'Firma', $this->timesheetManager->getCompanyNames()->fetchPairs('Cmp_ID', 'CmpName1'))
->setPrompt('Zolte');
$form->addDependentSelectBox('Prj_ID', 'Projekt', $form["Cmp_ID"])
->setDependentCallback(function ($values) {
$data = new \NasExt\Forms\DependentData;
return $data->setItems(**zde dotaz na db s použitím $values['Cmp_ID'] vracející fetchPairs**);
//např. return $data->setItems($this->timesheetManager->getProject($values['Cmp_ID'])->fetchPairs('Prj_ID', 'PrjName'));
});
$form->addText('TskName', 'Obor zájmu');
$form->addText('TskDescription1', 'Popis úkolu');
$form->addSubmit('submit', 'Uložit');
$form->onSuccess[] = [$this, 'timesheetFormSucceeded'];
return $form;
}
- iNyxLadis
- Člen | 48
dave2005 napsal(a):
Zrovna jsem řešil stejnou věc. Mělo by stačit DependentSelectBox upravit takto:
protected function createComponentTimesheetForm() { $form = new Form; $form->addSelect('Cmp_ID', 'Firma', $this->timesheetManager->getCompanyNames()->fetchPairs('Cmp_ID', 'CmpName1')) ->setPrompt('Zolte'); $form->addDependentSelectBox('Prj_ID', 'Projekt', $form["Cmp_ID"]) ->setDependentCallback(function ($values) { $data = new \NasExt\Forms\DependentData; return $data->setItems(**zde dotaz na db s použitím $values['Cmp_ID'] vracející fetchPairs**); //např. return $data->setItems($this->timesheetManager->getProject($values['Cmp_ID'])->fetchPairs('Prj_ID', 'PrjName')); }); $form->addText('TskName', 'Obor zájmu'); $form->addText('TskDescription1', 'Popis úkolu'); $form->addSubmit('submit', 'Uložit'); $form->onSuccess[] = [$this, 'timesheetFormSucceeded']; return $form; }
Ahoj, děkuji ti za odpověď :-) už se jedná o historickou věc, popravdě si ani už nevzpomínám, jak jsem to tenkrát vyřešil. :-)) Ale třeba to pomůže někomu jinému, každopádně díky.