我刚开始使用PHP中的OOP,我尝试制作简单的LOGIN表单,只需检入数据库。但是,当我加载页面时,它只是抛出我在本主题名称中的错误。知道我该如何解决这个问题?
<?php
use Nette\Application\UI;
use Nette\Database\Connection;
/**
* Homepage presenter.
*/
class HomepagePresenter extends BasePresenter
{
protected function createComponentSign()
{
$form = new UI\Form;
$form->addText('name', 'Jméno:');
$form->addPassword('password', 'Heslo:', 30);
$form->addCheckbox('persistent', 'Pamatovat si mě na tomto počítači');
$form->addSubmit('login', 'Přihlásit se');
$form->onSuccess[] = callback($this, 'signSubmited');
return $form;
}
// volá se po úspěšném odeslání formuláře
public function signSubmited(UI\Form $form)
{
try {
$user = $form->getValues()->name;
$values = $form->getValues();
if ($values ->persistent) {
$user->setExpiration('+30 days',FALSE);
}
$user->login($values->username, $values->password);
$this->flashMessage("Byl jsi úspěšně přihlášen jako: $values[name]");
//this->redirect('Homepage:');
} catch (Nette\Security\AuthenticationException $e) {
$form->addError('Neplatné uživatelské jméno nebo heslo.');
}
}
public function actionOut()
{
$this->getUser()->logout();
$this->flashMessage('Bol si odhlasený.');
$this->redirect('in');
}
}
答案 0 :(得分:1)
您的try / catch块中有以下代码行
$user = $form->getValues()->name;
为$ user分配一个字符串值,我假设你想要以下作业
$user = $this->getUser();
答案 1 :(得分:0)
$user
是字符串值,您正在尝试使用不正确的调用函数。
$user
必须是包含登录方法的对象。