致命错误在非对象PHP上调用成员函数login()

时间:2013-10-27 17:27:03

标签: php oop object

我刚开始使用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');
    }
} 

2 个答案:

答案 0 :(得分:1)

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

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

为$ user分配一个字符串值,我假设你想要以下作业

   $user = $this->getUser();

答案 1 :(得分:0)

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

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