Pozdější naplnění selectu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
SvvimX
Člen | 65
+
0
-

Ahoj, prosím o radu mám formulář

class CBasketAddForm extends \CBaseForm {
	public function __construct( IContainer $parent = NULL, $name = NULL ) {

        parent::__construct( $parent, $name );
    	$this -> addSelect( 'size' )
                -> setRequired ( 'Vyberte prosím velikost' )
                ;
	...

A select size jakoby nemá žádné optiony. Ty mu také přiřadí až presenter, který se dozví, jaké velikosti, že to vlastně máme.

$form = $this -> getComponent( "basketAddForm" );

$lager = \CProductLagerManager:: getAll( $id );

$form [ 'size' ] -> items = $lager; //zkoušel jsem i setItems

Formulář se dobře zobrazí, ale jelikož Nette hlídá, aby se odeslalo jen co je definováno v možnostech (nic) tak todle nefunguje.

Ještě jsem to upravil tak, že formulář select neobsahoval, až v továrničce jsem udělal

$form = new CBasketAddForm;
onSuccess handleAddToBasket ( CBasketAddForm $form );

Díky moc za radu

uestla
Backer | 799
+
+1
-

Ahoj.

protected function createComponentBasketAddForm()
{
	$form = new CBasketAddForm;
	$form->setSizeItems( \CProductLagerManager::getAll($id) );
	// ...
	return $form;
}


class CBasketAddForm extends \CBaseForm
{
	// ...

	function setSizeItems($items)
	{
		$this['size']->items = $items;
	}
}

Píši to z paty, ale mohlo by to fungovat.

Editoval uestla (4. 8. 2012 8:57)