Nastavení ID hodnoty formuláře
- Manny7
- Člen | 67
Ahoj, potřebuji formuláři nastavit ID hodnotu.
V dokumentaci jsem našel, že by to mělo jít takto:
** public function createComponentFirstForm($name)
{
$form = new AppForm($this, $name);
//$form->setMethod(‚post‘); ? nefunguje ?
//Html::el(„form id=hahahaha“);
$form->getElementPrototype()->id(‚very-nice-form‘);
}**
Nicméně když to zkusím takhle, tak když se mrknu na vygenerovanou stránku
do kódu, tak mám <form> stále bez IDčka.
Nevíte kde by mohl být problém? Díky
- MIKI
- Člen | 34
Zdravim,
nechapem, ale mne to nefunguje.
public function createComponentLoginForm()
{
$form = new AppForm();
$form->addText('name', 'Name:', /*size*/50, /*maxlength*/60)
->addRule(Form::FILLED, 'Musite vyplnit text!');
$form->onSubmit[] = callback($this, 'processLoginForm');
$form->getElementPrototype()->setId('test'); // L1
//var_dump($form); // L2
$form->getElementPrototype()->id = 'test'; // L3
//var_dump($form); // L4
return $form;
}
sablona
{widget loginForm}
Ak odkomentujem L2, najdem v objekte AppForm nastavenu polozku „id“ na ‚test‘, to iste pri L4. Ale v sablone je vygenerovane id=„frm-loginForm“
Kde robim chybu?
- toka
- Člen | 253
V presenteru:
protected function createComponentFormLogin() {
$form = new AppForm;
$form->addText('username', 'Login:')
->addRule(Form::FILLED, 'Zadejte, prosím, svoje přihlašovací jméno');
$form->addPassword('password', 'Heslo:')
->addRule(Form::FILLED, 'Zadejte, prosím, svoje heslo');
$form->addProtection();
$form->addSubmit('submitted', 'Přihlásit');
$form->onSubmit[] = array($this, 'formLoginSubmitted');
$form->getElementPrototype()->id = 'nove-id';
return $form;
}
V šabloně:
{widget formLogin}
Vygenerovaný výsledek („vyrenderovaná“ šablona):
<form action="/www/.../document_root/index.php?action=login&do=formLogin-submit" method="post" id="nove-id" name="frm-formLogin" onsubmit="return nette.validateForm(this)">
<table>
<tr class="required">
<th><label class="required" for="frmformLogin-username">Login:</label></th>
<td><input type="text" class="text" name="username" id="frmformLogin-username" value="" /></td>
</tr>
<tr class="required">
<th><label class="required" for="frmformLogin-password">Heslo:</label></th>
<td><input type="password" class="text" name="password" id="frmformLogin-password" /></td>
</tr>
<tr>
<th> </th>
<td><input type="submit" class="button" name="submitted" id="frmformLogin-submitted" value="Přihlásit" /></td>
</tr>
</table>
<div><input type="hidden" name="_token_" id="frmformLogin-_token_" value="10366d93fa8c746104e7d969cdb30bf7" /></div>
</form>
Editoval toka (13. 9. 2010 20:29)
- toka
- Člen | 253
MIKI napsal(a):
HURA! Uz viem, kde bola chyba :)
Spravny kod na fungovanie vlastneho ID pre formular ma byt takyto:public function createComponentFormLogin($name) { $form = new AppForm($this, $name); ... $form->getElementPrototype()->id = 'test'; ... }
Aha, že bych neměl v adresáři, kde jsem testoval, aktuální Nette? :-D Protože to, co jsem poslal, mi vážně jde. Co máš za verzi? Já to zkoušel na 0.9.3 2ce0ca6 released on 2010–02–02, což se přiznám, je trošku starší. Nevím, jak se mi to připletlo :-D
- redhead
- Člen | 1313
To je vlastně jenom na prvcích.
Máš to o pár postů dřív: https://forum.nette.org/…ty-formulare?… (nespíš tam musí být kontruktor s těmi parametry)
Editoval redhead (3. 12. 2010 16:04)
- Chbox
- Člen | 125
zkoušel jsem oboje, dokonce, když si to vydampuju je tam spravana hodnota,
ale ve formu visí pořád default hodnota. :-(
aha, tak komponenta musí být zapsána:
protected function createComponentLoginForm($name){
$form = new AppForm($this,$name);
...
}
a ne:
protected function createComponentLoginForm(){
$form = new AppForm(); ...
}
pak to chodí ok.
Editoval Chbox (3. 12. 2010 16:34)