setOption(‚id‘, <id>) nefunguje, nastavavani hodnot podle jinych prv. v frm

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

Ahoj,
narazil jsem na mesi problem ohledne „setOption“ pro „addText“.(setOption(‚id‘, <moc_pekne_id>))

Vypada to, ze z nejakeho duvodu nefunguje a naprosto netusim proc :).

dalsi moje otazka se tyka toho, jak defaultne nastavovat hodnoty input poli v zavislosti na jinem input poli? Chci napriklad, aby, kdyz uzivatel vyplni input s nazvem „A“, aby se mi jeho hodnota ve formulari zkopirovala do input s nazvem „C“. Jde toto nejak udelat?

Nize prikladam cely formular…

if ($this->entity->isNew()) {
			$form->addGroup('groupAddBranch');
		} else {
			$form->addGroup('groupEditBranch');
		}

		$form->addHidden('id');

		$address = $form->addContainer('address');

		$form->addText('name', 'name')
			->setAttribute('placeholder', 'namePlaceholder')
			->setRequired('nameRequired');

		$address->addText('email', 'email')
			->setAttribute('placeholder', 'emailPlaceholder')
			->setRequired('emailRequired')
			->setType("email")
			->addRule(Form::EMAIL, 'emailRule');

		$address->addText('phone', 'phone')
			->setAttribute('placeholder', 'phonePlaceholder')
			->setRequired('phoneRequired');

		$address->addText('street', 'street')
			->setAttribute('placeholder', 'streetPlaceholder')
			->setRequired('streetRequired');

		$address->addText('city', 'city')
			->setAttribute('placeholder', 'cityPlaceholder')
			->setRequired('cityRequired');

		$address->addText('zipCode', 'zipCode')
			->setAttribute('placeholder', 'zipCode')
			->setRequired('zipCodeRequired')
			->addRule(Form::MAX_LENGTH, 'zipCodeMaxLength', 5);

		$address->addText('state', 'state')
			->setAttribute('placeholder', 'statePlaceholder');

		$items = $this->countries->findActivePairs();
		$address->addSelect('country', 'companySetting.branchForm.country', $items)
			->setTranslator($this->translator)
			->setPrompt('companySetting.branchForm.countryPrompt')
			->setRequired('companySetting.branchForm.countryRequired');


		if ($this->entity->isNew()) {
			$login = $form->addContainer('login');
			$login->addCheckbox('loginCheckbox', 'login')
				->addCondition(FORM::EQUAL, TRUE)
				->toggle('login-passwod')
				->toggle('login-email');

			$login->addPassword('password', 'password')
				->setOption('id', 'login-password')
				->setAttribute('placeholder', 'passwordPlaceholder')
				->addConditionOn($login['loginCheckbox'], Form::EQUAL, TRUE)
				->setRequired('passwordRequired')
				->addRule(Form::MIN_LENGTH, 'passwordRule', 6);

			$login->addText('email', 'email')
				->setOption('id', 'login-email')
				->setType("email")
				->setAttribute('placeholder', 'emailPlaceholder')
				->addConditionOn($login['loginCheckbox'], Form::EQUAL, TRUE);
		}

		$form->addSubmit('submit', 'submit');

Editoval koudis (10. 11. 2015 16:40)

David Matějka
Moderator | 6445
+
0
-

narazil jsem na mesi problem ohledne „setOption“ pro „addText“.(setOption(‚id‘, <moc_pekne_id>))

kde si narazil, ze by to melo fungovat? pouzij bud setHtmlId('foo') nebo setAttribute('id', 'foo')

uzivatel vyplni input s nazvem „A“, aby se mi jeho hodnota ve formulari zkopirovala do input s nazvem „C“. Jde toto nejak udelat?

jako v prohlizeci? to si udelej v JS

koudis
Člen | 33
+
0
-

narazil jsem na mesi problem ohledne „setOption“ pro „addText“.(setOption(‚id‘, <moc_pekne_id>))

kde si narazil, ze by to melo fungovat? pouzij bud setHtmlId('foo') nebo setAttribute('id', 'foo')

https://doc.nette.org/…s/validation
v sekci „Jak se vyhnout manualnimu renderovani“.

Bohuzel, tva varianta nefunguje. Schova to sice input, ale necha Label, coz je nepekne.
Nejake dalsi napady? (budu rad :))

uzivatel vyplni input s nazvem „A“, aby se mi jeho hodnota ve formulari zkopirovala do input s nazvem „C“. Jde toto nejak udelat?

jako v prohlizeci? to si udelej v JS

OK, diky. vyzkouzim „Nette form a javascript“:).

Honza

Editoval koudis (10. 11. 2015 16:49)

David Matějka
Moderator | 6445
+
+1
-

Jo ty chces nastavit ID pro cely div, ktery obaluje form a label. To v navodu by melo fungovat – tedy pokud pouzivas DefaultFormRenderer a nevykreslujes to jinak (jinym rendererem nebo manualne)

koudis
Člen | 33
+
0
-

David Matějka napsal(a):

Jo ty chces nastavit ID pro cely div, ktery obaluje form a label. To v navodu by melo fungovat – tedy pokud pouzivas DefaultFormRenderer a nevykreslujes to jinak (jinym rendererem nebo manualne)

a ted dalsi otazka – jak zjistim, jaky renderer pouzivam?

Hledal jsem hledal, ale asi spatne…

Honza

Editoval koudis (10. 11. 2015 16:53)

David Matějka
Moderator | 6445
+
0
-

Pokud si nenastavoval zadny pres setRenderer, tak pouzivas ten defaultni.

A jak vykreslujes? pomoci {control ..} nebo {form ..}?

koudis
Člen | 33
+
0
-

David Matějka napsal(a):

Pokud si nenastavoval zadny pres setRenderer, tak pouzivas ten defaultni.

A jak vykreslujes? pomoci {control ..} nebo {form ..}?

Pomoci {control createForm}.

David Matějka
Moderator | 6445
+
0
-

ukaz, jak se vygenerovalo HTML treba toho password inputu (vcetne obalovaciho div-u)

koudis
Člen | 33
+
0
-

David Matějka napsal(a):

ukaz, jak se vygenerovalo HTML treba toho password inputu (vcetne obalovaciho div-u)

vyskousel jsem nastavit DefaultFormRenderer a setOption funguje. Najdu renderer, ktery formular pouziva a opravim ho ci nejak jinak znasilnim.

Opravdu by me zajimalo, proc lide implementuji vlastni renderer uplne od znova…

Editoval koudis (10. 11. 2015 17:11)

koudis
Člen | 33
+
0
-

Ahoj,

a dekuji moc za pomoc :). Jsem C/C++ a s Nette nedelam, takze nez bych toto nasel :D…

Editoval koudis (10. 11. 2015 17:13)