0

我将控制器中的用户对象传递给视图,然后调用该控制器上的方法。我在视图中的对象上做了一个print_r,所以我知道这是正确的对象和正确的值。 current_user变量是用户类的一个实例。Zend Framework:从控制器传递值时查看不完整的对象错误

以下是布局中出现错误的那一行。

<?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

我包括完整的控制基地,其中这叫做情况下,它的确与众不同

<?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(); 
    } 
} 
+0

该错误谈论序列化,但我没有看到该行。 –

+0

那是因为我没有序列化这个对象,这肯定让我难住了。 – Jhorra

+1

我发现错误是在布局中,而不是在视图中...你能检查这个吗? –

回答

2

Zend Framework的授权模块的用途会议保持页面加载时的身份,并可能在封面下序列化用户模型(特别是如果您只是分配Zend_Auth_Adapter调用的结果)。

尝试在第一次调用getIdentity()之前包含User类,并查看是否修复了它(即使您确信自己没有序列化它)。

+0

我已经包含了用户文件,但它仍然给出错误。我还编辑了完整控制器基类的帖子,其中设置了这些值。 – Jhorra