odmazaní mezery na začátku vstupu form
- Majkl578
- Moderator | 1364
Pravděpodobně budeš muset podědit TextInput a překrýt metodu sanitize tak, aby nepoužívala Strings::trim.
- ViPEr*CZ*
- Člen | 817
Domki napsal(a):
A to musim v presenteru? Pred tím nez to pouziju takze pred createComponentfldfdForm
?
Co? Majkl o koze a otázka o voze? Co musíte v presenteru? Vždyť to majkl jasně napsal, podědit, přepsat jednu metodu, tak aby nemazala mezeru a použít? Možná tomu nerozumím, ale ptáte se kde máte dědit… jestli v presenteru?
- ViPEr*CZ*
- Člen | 817
Domki napsal(a):
No ne mě de jen o to jestli v presenteru jako v tom souboru.
A nebo nekdě odděleně
No ne a mně jde o to, aby jste si to přečetl!
Na to se snad ani nemůžete ptát! Budete dělat novou třídu, která bude
potomkem jiné třídy. Slovo presenter tu nemá vůbec co dělat. Tam tu
třídu můžete tak maximálně použít.
- Domki
- Člen | 310
Vy mě asi nechápete zkusím to jinak.
Když chci zdědit třídu z libs/nette/forms/control/TextInput
tak musím nekde vytvorit tu novou tridu TextInputMuj kde bude extends
TextInput…překrytí tý metody…
Ale nevím kam mám tu novou třídu umístit jako do jakyho souboru, a pak jak docílím toho aby se pouzila ta prekryta metoda ze zdedeny tridy TextInputMuj v presenteru kde ted pouzivam tu metodu z TextInput, kdyz ten formular vytvarim new Form()
A OOP mám nastudovany. Ale když v javě dedím překryju tak proste mam jednu slozku v tom soubory trídy, a to chapu
Ale tady nevím kam ten kod mam napsat
- Domki
- Člen | 310
Tak v libs mam
Aaa
– TextInputMuj.php
V tom tu tridu
a v presenteru
use Aaa\TextInputMuj;
a vytvoreni prvku:
$form->addComponent(new TextInputMuj('varianty', 'Varianty:', 60))->setDefaultValue($infZb->varianty)->addRule(Form::MAX_LENGTH, 'Varianty nesmí mít vice jak 100 znaků.', 100);
A vypisuje to chybu
Class 'Aaa\TextInputMuj' not found search►
na řádku kde pridavam tu komponentu
Co s tím?
- Domki
- Člen | 310
Ano děkuji, a ted to ještě píše chybu
Missing argument 2 for Nette\Forms\Container::addComponent(),
na tom samém řádku:
$form->addComponent(new TextInputMuj('varianty', 'Varianty:', 60))->setDefaultValue($infZb->varianty)->addRule(Form::MAX_LENGTH, 'Varianty nesmí mít vice jak 100 znaků.', 100);
- Domki
- Člen | 310
Aha.
Zkoušel jsem to nak najít a upravit tak sem zjistil ze by tam mělo být
ještě jméno Tak jsem to upravil takhle:
$form->addComponent(new TextInputMuj('varianty', 'Varianty:', 60), "varianty")->setDefaultValue($infZb->varianty)->addRule(Form::MAX_LENGTH, 'Varianty nesmí mít vice jak 100 znaků.', 100);
Ale takto to asi nema byt kyz tam mam dvakrat stejnej nazev jak bych to mel
presne upravit?
a jeste ted mi to pise Call to undefined method
Nette\Application\UI\Form::setDefaultValue()
A pred tím mi to v pohode nastavovalo def hodnotu.
- jtousek
- Člen | 951
Když říkám API myslím i API toho TextInputu. Konstruktor to jméno nechce.
https://api.nette.org/…xtInput.html
EDIT: A když se podíváš sem zjistíš, že addComponent ti nevrací tu komponentu ale ten kontejner – v daném případě objekt třídy Form. Mohl bych ti ty dva řádky napsat, ale věřím že to vymyslíš sám. ;-)
Editoval jtousek (21. 9. 2012 19:16)
- jtousek
- Člen | 951
Takže nevymyslíš. No dobře. Metodu setDefault má ten input = komponenta. Máš tedy dvě možnosti:
$input = new \Aaa\TextInputMuj('Varianty:', 60);
$input->setDefaultValue($infZb->varianty)
->addRule(Form::MAX_LENGTH, 'Varianty nesmí mít vice jak 100 znaků.', 100);
$form->addComponent($input, 'varianty');
Nebo:
$form->addComponent(new \Aaa\TextInputMuj('Varianty:', 60), 'varianty');
$form['varianty']->setDefaultValue($infZb->varianty)
->addRule(Form::MAX_LENGTH, 'Varianty nesmí mít vice jak 100 znaků.', 100);
Nebo (PHP 5.4 only!):
$form->addComponent(
(new \Aaa\TextInputMuj('Varianty:', 60))
->setDefaultValue($infZb->varianty)
->addRule(Form::MAX_LENGTH, 'Varianty nesmí mít vice jak 100 znaků.', 100),
'varianty');
Mimochodem když máš vlastní namespace Aaa (doporučuji přejmenovat) tak už ta třída může klidně být jen TextInput. Že to není ten z Nette ale ten tvůj je jasné z toho namespace.
- Domki
- Člen | 310
JO super už to funguje dík.
No já jsem zkoušel něco jako:
$form->addComponent(new TextInputMuj('Varianty:', 60)->setDefaultValue($infZb->varianty)->addRule(Form::MAX_LENGTH, 'Varianty nesmí mít vice jak 100 znaků.', 100), 'varianty');
Ale to mi blikal cervene už netBeans
A ted kdyz tadyna to koukám tak je asi spatne ta konstrukce new Aaa()->…,
ze musím prvne vytvorit instanci a az pak na ni volad metody?
JInak to namespace mas pravdu, to si i vzpominam že sem četl ze kdyz jsou v jinem namespace tak muzou mit stejnej nazev.
Tak ještě jednou moc díky