Zend Framework: Неполная ошибка объекта при передаче значения из контроллера в представление - PullRequest
0 голосов
/ 02 ноября 2011

Я передаю объект пользователя из контроллера в представление, затем вызываю метод на этом контроллере.Я сделал print_r для объекта в представлении, поэтому я знаю, что это правильный объект с правильными значениями.Переменная current_user является экземпляром пользовательского класса.

Вот строка в макете, которая выдает ошибку.

<?php echo $this->current_user->get_avatar_url(); ?>

Вот метод в классе пользователя, который он вызывает

public function get_avatar_url()
{
    return !empty($this->avatar) ? $this->avatar : $this->fb_userid != '' ? "http://graph.facebook.com/".$this->fb_userid."/picture" : "/public/images/pukie.jpg";
}

Это ошибка, которую я получаю

Неустранимая ошибка : main () Сценарий попытался выполнить метод или получить доступ к свойству незавершенного объекта.Убедитесь, что определение класса «Пользователь» объекта, с которым вы пытаетесь работать, было загружено до вызова unserialize () или предоставьте функцию __autoload () для загрузки определения класса в / home/breathel/public_html/application/views/layouts/layout.phtml в строке 48

Я включаю полную базу контроллеров, где это вызывается, если этоимеет значение

<?php
Zend_Loader::loadClass('Zend_Controller_Action');
Zend_Loader::loadClass('User');

class BaseController extends Zend_Controller_Action
{
    protected $auth;
    protected $current_user;
    protected $db;

    protected function initialize_values()
    {
        $auth = Zend_Auth::getInstance();
        if($auth->hasIdentity())
        {
            $this->current_user = $auth->getIdentity();
            $this->view->current_user = $this->current_user;
        }

        $this->db = Zend_Registry::get('dbAdapter');

        $this->view->controller_name = $this->_request->getControllerName();
        $this->view->view_name = $this->_request->getActionName();
    }
}

1 Ответ

2 голосов
/ 02 ноября 2011

Модуль авторизации Zend Framework использует сеансы для сохранения идентичности при загрузке страницы и, вероятно, сериализует модель User под обложками (особенно, если вы просто присваиваете результат вызова Zend_Auth_Adapter).

Попробуйте включитьПользовательский класс перед первым вызовом getIdentity () и посмотрите, исправит ли это это (даже если вы уверены, что сами не сериализуете его).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...