Diskuze: Label - změna názvu u selectu
Zobrazeno 2 zpráv z 2.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Co jsi nasel za uzitecne nebo jine, mozna uzitecne informace googlem, ve
kterych se nevyznas? Hledal jsi googlem?
google = nette framework formulare zmena labelu
https://doc.nette.org/…rm-rendering
a) $form->render(); - kdyz to vyrendrujes, tak uz nic nezmenis, to je html kod. Leda zamenit text pres preg_replace
Prepsani, jakym zpusobem se label ma zobrazovat, renderovat
$renderer = $form->getRenderer();
$renderer->wrappers['controls']['container'] = 'dl';
$renderer->wrappers['pair']['container'] = null;
$renderer->wrappers['label']['container'] = 'dt';
$renderer->wrappers['control']['container'] = 'dd';
$form->render();
Nastaveni policek pro password
$form = new Form;
$form->addText('user')->setRequired();
$form->addPassword('password')->setRequired();
$form->addSubmit('send');
return $form;
Nastaveni atributu u selectu
$form->addSelect('rank', 'Řazení dle:', ['ceny', 'názvu'])
->setHtmlAttribute('onchange', 'submit()'); // při změně odeslat
// a input type text
$form->addText('tel', 'Váš telefon:')
->setHtmlType('tel')
->setHtmlAttribute('placeholder', 'napište telefon');
Atd... Vlevo v menu je napr. "Formulářové prvky"
$form->addSelect('country', 'Země:', $countries)
->setPrompt('Zvolte zemi');
Z toho se da celkem snadno odvodit, ze, kdyz bych zkoumal php kod nette,
nejspis takova zmena, co pozadujes, nebude mozna.
Ale, pnevylucuji, ze to jde, stale je to asi php objekt nez spustis
render().
Nicmene, jak to tedy udelat? Udelej si funkci, ktera generuje ten formular a
ktere predas parametry. A jednim z nich bude label.
A ted se divam dal a asi to pujde. Ikdyz je to podle mne nesmyslne, protoze
formular mas generovat tou funkci, kde predas parametry, nikoliv samostatne.
Přístup k prvkům
$input = $form->getComponent('name');
// alternativní syntax: $input = $form['name'];
Cili, asi by to mohlo byt neco takoveho:
$this['offer']->addSelect('test', 'bez názvu', $hodnoty)->setPrompt('-');
$myselect = $form->getComponent('test'); // nebo
$myselect = $form['test']; // ale tomu bych se vyhnul, muzes se trefit do interniho nazvu v objektu
$myselect->setLabet('xxx'); // nevim, mrkni do dokumentace, jen tipuji vzor podle ostatnich prikladu
Zobrazeno 2 zpráv z 2.