Chyba v $this v registračním formuláři
- razorlight
- Člen | 15
Ahoj, mám tento kód u registračního formuláře, u mě na localhostu to funguje v pohodě, ale na serveru na hostingu mi to píše chybu „Fatal Error: Using $this when not in object context“. Jde o nějakou jinou verzi PHP? jak to opravit aby to fungovalo všude?
<?php
public function createRegisterForm($instructions = null, Form $form = null){
$form = $this->createBasicForm($form);
$form->addPassword('password_repeat')
->setRequired()
->setAttribute('placeholder', 'Heslo znovu')
->addRule(Form::EQUAL, 'Hesla nesouhlasí.', $form['password']);
$form->addText('y')->setType('number')->setRequired()
->setAttribute('placeholder', 'Zadejte aktuální rok (antispam).')
->addRule(Form::EQUAL, 'Špatně vyplněný antispam', date('Y'));
$form->addSubmit('register', 'Registrovat');
$form->onSuccess[] = function(Form $form) use ($instructions){
$this->login($form, $instructions, true);
};
return $form;
}
?>
Díky za radu
- Blujacker
- Člen | 89
razorlight napsal(a):
Ahoj, mám tento kód u registračního formuláře, u mě na localhostu to funguje v pohodě, ale na serveru na hostingu mi to píše chybu „Fatal Error: Using $this when not in object context“. Jde o nějakou jinou verzi PHP? jak to opravit aby to fungovalo všude?
<?php public function createRegisterForm($instructions = null, Form $form = null){ $form = $this->createBasicForm($form); $form->addPassword('password_repeat') ->setRequired() ->setAttribute('placeholder', 'Heslo znovu') ->addRule(Form::EQUAL, 'Hesla nesouhlasí.', $form['password']); $form->addText('y')->setType('number')->setRequired() ->setAttribute('placeholder', 'Zadejte aktuální rok (antispam).') ->addRule(Form::EQUAL, 'Špatně vyplněný antispam', date('Y')); $form->addSubmit('register', 'Registrovat'); $form->onSuccess[] = function(Form $form) use ($instructions){ $this->login($form, $instructions, true); }; return $form; } ?>
Díky za radu
Smazana cache na serveru byla?
- leninzprahy
- Člen | 150
Tento zápis předpokládá minimálně php 5.4
U nižších verzí lze použít něco jako:
$that = $this;
$form->onSuccess[] = function(Form $form) use ($instructions, $that){
$that->login($form, $instructions, true);
};
razorlight napsal(a):
Ahoj, mám tento kód u registračního formuláře, u mě na localhostu to funguje v pohodě, ale na serveru na hostingu mi to píše chybu „Fatal Error: Using $this when not in object context“. Jde o nějakou jinou verzi PHP? jak to opravit aby to fungovalo všude?
<?php public function createRegisterForm($instructions = null, Form $form = null){ $form = $this->createBasicForm($form); $form->addPassword('password_repeat') ->setRequired() ->setAttribute('placeholder', 'Heslo znovu') ->addRule(Form::EQUAL, 'Hesla nesouhlasí.', $form['password']); $form->addText('y')->setType('number')->setRequired() ->setAttribute('placeholder', 'Zadejte aktuální rok (antispam).') ->addRule(Form::EQUAL, 'Špatně vyplněný antispam', date('Y')); $form->addSubmit('register', 'Registrovat'); $form->onSuccess[] = function(Form $form) use ($instructions){ $this->login($form, $instructions, true); }; return $form; } ?>
Díky za radu
- razorlight
- Člen | 15
jj cache je smazaná a zkoušel sem i $that a to mi hází error undefined variable. mám jí definovanou přímo v tý funkci
- David Matějka
- Moderator | 6445
asi si to $that
pouzil spatne – koukni znovu na ten prispevek
@leninzprahy . musis tam mit $that = $this
a potom to
$that
vlozit do use
u closure
- razorlight
- Člen | 15
ajo toho sem si předtim nevšiml. No teďka sem to teda upravil a píše mi to další error: Nette\MemberAccessException: Call to undefined method parent::login()…
U mě na local opět funkční už takhle.
- David Matějka
- Moderator | 6445
Mimochodem, durazne doporucuji pouzit novejsi verzi PHP, 5.3 je jiz 2 roky nepodporovana: http://php.net/…versions.php
a nove nette bude podporovat jen php >= 5.6