špatná detekce odesílacího tlačítka s jedním handlerem
- Oggy
- Člen | 306
mám formulář s více odesílacími tlačítky, které mají stejný handler .. a vždy je bráno jako to, kterým se formulář odeslal, to první.
<?php
protected function createComponentOrderForm($name,$rows = 1) {
$form = new AppForm($this,$name);
...
for ( $i = 1; $i <= $rows; $i++ ) {
$f = $phm->addContainer($i);
....
$f->addSubmit('deleteRow', 'Odebrat řádek')
->setValidationScope(FALSE);
$form['phm'][$i]['deleteRow']->onClick[] = callback($this, 'deleteRow');
}
....
$form->onSubmit[] = callback($this, 'orderFormSubmitted');
return $form;
?>
a do handleru deleteRow .. je vždy předán jako parametr submitButton
první..
jsou zanořeny do containeru .. a to poslední jméno mají stejné..ale to by
sna nemělo vadit..
např. $form[phm][1][deleteRow] $form[phm][2][deleteRow]
<?php
public function deleteRowFuel(SubmitButton $button) {
dump buttonu a je to vzdy ten prvni
}
?>
kde by mohl být zakopaný pes? mám špatně nastavené ty callbacky?
- Oggy
- Člen | 306
Ola napsal(a):
Pravděpodobně to v potřebné fázi dostane
$rows=1
– není vhodné upravovat parametry funkce createComponentXXX, jediný způsob jak zajistit aby to fungovalo správně je přenést rows v URL (persistentní parametr), nebo v session.
ale řádky se mi přídávají a odebírají správně.. to neřeším:-)
..
ale když už jsme to nakousli ..takhle vypadá přidání řádku..
<?php
public function addRow(SubmitButton $button) {
$values = $button->getForm()->getValues();
$values['rows'] ++;
unset($this['orderForm']);
$form = $this->createComponentOrderForm('orderForm',$values['rows']);
$form->setDefaults($values);
$form['fuelRows']->setValue($values['rows']);
if( $this->isAjax()) {
$this->invalidateControl('orderForm');
}
}
?>
tady není problém.. nebo jo?
v session jsem to měl.. ale potom to nerozezná, kdy se formulář zobrazuje poprvé, když jsem před chvílí měl v session např. 4 řádky.. tak v jaké chvíli je nulovat?
- Oggy
- Člen | 306
Ola napsal(a):
Pravděpodobně to v potřebné fázi dostane
$rows=1
– není vhodné upravovat parametry funkce createComponentXXX, jediný způsob jak zajistit aby to fungovalo správně je přenést rows v URL (persistentní parametr), nebo v session.
tak to ještě trošku debuguju a máš asi pravdu.. ono to sice chodí ale při dumpu getValues() .. vrací vždy jen jeden řádek..
díky