3

我想在 cakephp 的组件文件中运行查询,但它显示致命错误,当我在控制器中执行此操作时,它工作得非常好,但我想在组件中执行此操作。

 function product_check(){

 $this->User = ClassRegistry::init('User');
 $this->UserNode = ClassRegistry::init('UserNode');
 $this->ProductsUserNode = ClassRegistry::init('ProductsUserNode');

    $conditionss = array(
        # http://book.cakephp.org/2.0/en/models/retrieving-your-data.html
        'OR' => array(
            array('ProductsUserNode.'. NODE_ID => $this->Auth->user(NODE_ID)),
            array('ProductsUserNode.'. NODE_ID => $this->Auth->user(NODE_IDX)),
        ),
    );

     $productcheck = $this->User->UserNode
                                ->ProductsUserNode
                                ->find(
                                    'first'
                                    , array(
                                            'conditions' => $conditionss
                                    )   
                                );

     $active = $productcheck['ProductsUserNode']['is_active'];
    if ($active == "0")
    {
        $this->Session->setFlash('You Are Deactived For This Product'); 
        $this->redirect(array('controller'=>'events','action'=>'view_dashboard'));
    } 


}

但它显示了这个错误

Fatal Error
Error: Call to a member function user() on a non-object 

我该如何解决这个问题?提前致谢

4

2 回答 2

1

我认为您没有指定您的组件使用该Auth组件。您可以使用以下代码段执行此操作:

public $components = array('Auth');

另请参阅在组件中使用其他组件

于 2013-02-07T10:30:54.373 回答
0

尝试通过在 product_check() 中加载用户模型

  $this->ModelName = ClassRegistry::init('ModelName');

在你的情况下它是 User ,这应该是理想的工作,只要确保你有:

  model : User.php 

和表

users

希望能帮到你!

于 2013-02-07T07:27:09.523 回答