pridanie komponentu do presenteru
- Michal8245
- Člen | 14
Zdravím prosím vas mam taky problém snažím sa o rozbehanie komponentu Captcha čo je tu na fore zaveseny a dostal som sa až do bodu kedy mi vyhadzuje vynimku „Component ‚captcha‘ is not attached to ‚Presenter‘“.
public function getLink($need = FALSE)
{
if (!isset($this->link)) {
$presenter = $this->lookup('Presenter');
if ($presenter !== NULL) {
$this->link = $presenter->lazyLink(self::$defaultLinkMask);
}
if ($need && $this->link === NULL) {
throw new InvalidStateException('Component must be attached to presenter for link autocreation.');
}
}
return $this->link;
}
vyhadzuje mi to pri tom ako sa snaží dostat presenter. neviete niekto čo
s tym?
dakujem vopred
- nanuqcz
- Člen | 822
Ahoj, dáváš nám docela málo informací. Jak vytváříš formulář s captchou? Jak vypadá celý výpis z laděnky?
Zkusím si ale tipnout :-) Pokud vytváříš formulář takto:
function createComponentForm() {
$form = new Form();
...
}
zkus formuláři předat aktuální presenter a jméno budoucí komponenty:
function createComponentForm($name) { // parametr $name ti tam Nette předá samo
$form = new Form($this, $name);
...
}
- Michal8245
- Člen | 14
no formular mam ako zvlašt komponent
class RegisterForm extends AppForm
{
public function __construct($parent, $name)
{
parent::__construct($parent, $name);
class_exists('Captcha');
$this->addText("name","Full name");
$this->addText("login", "User name")
->addRule(NForm::FILLED);
$this->addText("email","E-mail")
->setEmptyValue("@")
->addRule(NForm::FILLED)
->addRule(NForm::EMAIL);
$this->addPassword("password", "Heslo")
->addRule(NForm::FILLED)
->addCondition(NForm::MIN_LENGTH,'Heslo musí mať aspoň %d znakov', 5);
$this->addPassword("passwordVerify", "Zopakuj heslo")
->addRule(NForm::EQUAL, "Heslá sa musia zhodovať", $this["password"]);
$this->addCaptcha('captcha', 'Zadaj kód z obrázku')
->setTextColor(NImage::rgb(255, 0, 0))
->addRule('Captcha::validateValid', 'Opište správně písmena z obrázku.');
$this->addSubmit("submit", "Pokračovať");
$this->addProtection('Vypršal časový limit, odošlite formulár znovu');
}
no a v presenteri mam vytvorenie
protected function createComponentRegisterForm($name)
{
$form = new RegisterForm($this, $name);
$form->onSuccess[] = callback($this, 'registerFormSubmitted');
}
no ale presenter to neni ta captcha presenter, ale presenter čo mam ja na
prihlasovanie. može byt aj tam problém?
no potom už len v šablone davam vypisovat control registerForm
tak asi tam bude chyba že nemam to ako naviazane na ten presenter. Ale
neviem ako to spravit inač .. ten navod čo je tu na fore na zakomponovanie tej
captchy do projektu je biedny tak neviem kde by mohla byt chyba.
a k tej ladenke neviem presne čo odtial potrebuješ skopirovat lebo nejako sa
v nej nevyznam je tam len chybova hlaška a subory kde nastala :D
Editoval Michal8245 (17. 11. 2012 8:36)