Dynamický obsah SELECTU v snippete posiela „null“?

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

Ahoj,

Mám vytvorený form a ten obsahuje selectbox „type“ a selectbox „parent“ asi nejako takto:

<?php
$form->addSelect( "type", $this->_t( 'messages.categoriesPresenter.catType' ) , $types )
	->setAttribute( "class", "form-control")
	->setPrompt( $this->_t( 'messages.categoriesPresenter.selectCatType' ) )
	->setRequired( $this->_t( 'messages.categoriesPresenter.notSetLabelCat',['label' => "%label"] ));

// Category Parent
$form->addSelect( "parent", $this->_t( 'messages.categoriesPresenter.parent') )
	->setAttribute( "class", "form-control")
    ->setPrompt( $this->_t( 'messages.categoriesPresenter.selectTypeFirst' ) )
    ->setRequired( $this->_t( 'messages.categoriesPresenter.notSetLabelCat',['label' => "%label"] ));
?>

Na select type mam nahookovany AJAX request cez nette.ajax.js, handler robi nieco taketo:

<?php
if ( in_array( $value, $this->categories->getCategoryTypes() ) ) {
	// we need to get possible parents for a type
	$categories = $this->categories->findCategories( [ "type" => $value, 'lang' => $this->currentLang ] );

	foreach ($categories as $category) {
		$parents[ $category->getId() ] = $category->name;
	}
	$this[ "categoryForm" ][ "parent" ]->setItems( $parents )
		->setPrompt( $this->_t( 'messages.categoriesPresenter.selectParentType' ) );
}
$this->redrawControl( 'parentsSnippet' );
?>

„parent“ select sa pri zmene typu normalne nacitava a prepisuje, snippet sa invaliduje vsetko fajn az na to ze, hodnota „parent“ select-u je vzdy NULL. A mne to vyhodi vynimku.

A este vacsia sranda je, ze ak dam z „parent“ prec vlastnost required, tak v onValidate funkcii mi stale debugger ukazuje, ze hodnota „parent“ selectu je NULL, ale nejaky undefined zazrak sposobuje, ze to ulozi spravnu hodnotu.

Moze prosim niekto napisat preco sa to deje, a ako to obist?

Dakujem

Čamo
Člen | 798
+
0
-

xrep
A ako získavaš dáta z formuláru? Musíš použiť

$values = $form->getHttpData();

viď. https://blog.nette.org/…-and-pure-js

duskohu
Člen | 778
+
0
-

Nechces pouzit DependentSelectBox ?

xrep
Člen | 51
+
0
-

@duskohu vdaka nie, sa mi zda zbytocne, mam na celej stranke jednu takuto vec a inde podobny problem nemam cize sa mi moc nechce instalovat kvoli tomu dalsi extension

@Čamo vdaka za tip, momentalne to riesim tak ze, parent mam nastaveny ako nevyzadovany a osetrujem ho extra v onValidate, kde si prave hodnoty vytiahnem cez $form->getHttpData();