DependentSelectBox, callbacky a žádný výsledek
- Hissun
- Člen | 9
Mám následující problém:
Používám DependentSelectBox, odstranil jsem uses a namespaces. Stačí mi ne-js funkčnost, nenahrál jsem tedy .js soubory, nemám v šabloně zavináče. Demo z addonu mi na lokalhost funguje v pořádku, se zapnutým javaskriptem i bez.
Problém:
Předpokládám, že nějak špatně mixuju standartní formulář a tenhle
addon. Po kliknutí na tlačítko „load“, které addon vyhodí pod
„select2“, dojde k „refreshi“, „xxxxx“ v selectboxu se změní na
----- (! – něco z DependentSelectBox tedy v důsledku je zavoláno) ale
jinak nic.
Nedojde k načtení dat (které má být v callbackové funkci), ani nevypadne flash zpráva, kterou jsem si tam dal abych otestoval, zda se funkce, na kterou má směřovat callback, vůbec volá.
Je tam vidět pro zkušené oko nějaká zjevná chyba? Copy-Paste úlet? Nebo pátrám na špatném místě? Musí tam být .js soubory funkčnost tohohle doplňku i když javascript nechci zatím využívat? Blbě používám tenhle addon v normálním formuláři?
Env:
PHP 5.2, xampp, win
PRESENTER:
<?php
public function createComponentBindCompanyForm()
{
$form = new AppForm;
$selectGameRuns = array();
// snip.. naplněni pole prvního selectboxu
$form->addSelect('selectedGameRun', 'Firmy z běhu hry:', $selectGameRuns)
->addRule(Form::FILLED, 'Musíte vybrat některý běh hry!')
->skipFirst();
$form->addDependentSelectBox("select2", "Výběr 2", $form["selectedGameRun"], callback($this, "fillValuesSelect2"));
$form->addSubmit('save', 'Přiřadit')
->onClick[] = array($this, 'onClickSave');
$form->addSubmit('back', 'Zpět')
->setValidationScope(FALSE)
->onClick[] = array($this, 'onClickBack');
$form->addProtection('Prosím odešlete formulář ještě jednou (vypršel bezpečnostní token).');
return $form;
}
public function onClickSave(SubmitButton $button)
{
// snip...
// toto funguje.
}
public function onClickBack()
{
// snip...
// toto funguje.
}
public function fillValuesSelect2($form) {
$this->flashMessage("Je to tu");
//snip.. naplnění submitu select2 podle vybrané hodnoty v selectedGameRun
// flashMessage se nezobrazi. Proč?
}
?>
ŠABLONA:
<?php
{block form}
{widget bindCompanyForm}
{/block}
?>
- Hissun
- Člen | 9
Díky Foowie, status = SOLVED :-)
- skipFirst() potřebuju – Form::FILLED a první hodnota „– vyberte –“.
nicméně pro ověření zakomentováno a nebylo to ono. Imho tohle by to ani způsobovat nemělo, jde přece o validaci na konrétním selectboxu, nemělo by se to v důsledku hádat s callbackama.
- upravený konstruktor AppForm($this, $name) zabral. To jsem opravdu za celý den neviděl a ani bych na to nepřišel.
dodatek: předpokládám, že tím, že jsem to tam neměl (a $name se dosazuje právě tím widget makrem), tak ležel tenhle formulář mimo „strom komponent“ a tak ho addon DependentSelectbox nedokázal vidět (anonymní formulář). Předpokládám správně? Ať je z toho i poučení, ne jenom vyřešení :-)
Editoval Hissun (2. 10. 2010 11:25)
- Foowie
- Člen | 269
Nahrál jsem tam trošku upravenou verzi, která to skipFirst
řeší ;) (Ale $form = new AppForm($this, $name)
používej
stále ;)
Btw: ten formulář se připojuje automaticky, pokud používáš továrničku. Proč to dělá neplechu bez okamžitého připojení do stormu komponent si nejsem jist (nějakou konspirační teorii mám v hlavě, ale není čas jí otestovat).