1

我刚从 PHP 中的 OOP 开始,我尝试制作简单的登录表单,只需签入数据库。但是,当我加载页面时,它只会以该主题的名义向我抛出错误。知道我该如何解决这个问题吗?

<?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');
    }
} 
4

2 回答 2

1

您的 try/catch 块中有以下代码行

   $user = $form->getValues()->name;

它为 $user 分配一个字符串值,我假设您想要以下分配

   $user = $this->getUser();
于 2013-10-27T17:30:45.620 回答
0

$user是字符串值,您正在尝试使用不正确的调用函数。

$user必须是包含登录方法的对象。

于 2013-10-27T17:29:36.870 回答