DependentSelectBox NasExt – naplnění select boxu daty z databáze

iNyxLadis
Člen | 48
+
0
-

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)

iNyxLadis
Člen | 48
+
0
-

Neporadil by mi někdo?:-)

Editoval iNyxLadis (31. 8. 2016 15:24)

dave2005
Backer | 1
+
+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
+
0
-

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.