无法在控制器中包含和使用组件的方法

Keyur Padalia

我正在使用CakePHP 2.8.3,并尝试在控制器中使用此组件,但出现此错误,是否有人遇到过同样的问题,请帮忙。

致命错误错误:调用非对象文件上的成员函数header():/mnt/hgfs/Projects/dev_kp/lib/Cake/Controller/Controller.php
行:779注意:如果要自定义此错误消息, 创建

应用程序/视图/错误/fatal_error.ctp

//Controller
    <?php

    App::uses('AppController', 'Controller');

    class UsersController extends AppController
    {
        public $name = 'Users';
        public $components = array('UserAuth');
        public $uses = array('User');

        public function dashboard()
        {
            echo $this->UserAuth->ValidateUser();
        }
    }
    ?>

    //Component
    <?php

    App::uses('Component', 'Controller');

    class UserAuthComponent extends Component
    {

        public function ValidateUser()
        {
           if(isset($_SESSION["USER_VALIDATE"]))
           {
              if($_SESSION["USER_VALIDATE"] == TRUE)
                 return TRUE;
           }
           else
           {
              $direct = new AppController();
              $direct->redirect(array('controller' => 'users', 'action' => 'login'));
            }
         }
     }
    ?>
ndm

第一件事

CakePHP附带了一个身份验证层,几乎不需要实现自己的身份验证层。如果需要自定义身份验证,则应使用自定义身份验证对象来实现它,请参阅

话虽如此

您在做什么不是CakePHP的工作方式,不是手动实例化控制器,也不是像$_SESSION直接访问超全局变量那样,而是使用CakePHP提供的抽象接口。

在将代码组合在一起之前,请阅读文档并确保您了解所使用的API。

如您所见,组件确实会收到在每个回调中使用它们的控制器的引用,因此,如果您需要访问控制器功能,则可以使用该引用。如果以后需要使用它,请将其存储在属性中,例如

protected $_controller = null;

public function initialize(Controller $controller) {
    $this->_controller = $controller;
}

public function ValidateUser() {
    // ...
    $this->_controller->redirect(/* ... */);
}

可以通过您可以包含在自定义组件中的会话组件轻松访问该会话,例如

public $components = array('Session');

public function ValidateUser() {
    // ...
    $value = $this->Session->read('USER_VALIDATE');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用fxml作为fxml中的组件时,JavaFX FXML无法正确看到我的控制器方法“未在根组件上定义控制器”

来自分类Dev

我无法从ExtJS的控制器中获取组件

来自分类Dev

EmberJS关于控制器,服务和组件使用的建议

来自分类Dev

如何使用Angular 1.5和Typescript在组件控制器中获取绑定值?

来自分类Dev

如何使用Angular 1.5和Typescript在组件控制器中获取绑定值?

来自分类Dev

Cake:以组件中的静态方法访问控制器

来自分类Dev

使用控制器中的集线器方法?

来自分类Dev

angularJs组件和控制器

来自分类Dev

包含和访问父控制器

来自分类Dev

$ on非组件控制器中的更改

来自分类Dev

无法路由到控制器中的方法

来自分类Dev

无法从控制器中的ApplicationHelper模块调用方法

来自分类Dev

无法路由到控制器中的方法

来自分类Dev

会话方法无法在控制器中调用2次

来自分类Dev

LARAVAL - 无法在控制器方法中调用函数

来自分类Dev

无法从控制器中的 HTTP 方法获取回调

来自分类Dev

无法连接到控制器中的方法

来自分类Dev

具有angularJS组件1.5的组件控制器中$ element和$ attrs的用途

来自分类Dev

无法使用Ajax调用控制器操作方法

来自分类Dev

如何在Rails 3.2中的视图和控制器中使用下划线方法?

来自分类Dev

Angular:无法使用服务访问控制器中的变量

来自分类Dev

无法使用芯片值更新控制器中的模型

来自分类Dev

在Codeigniter中命名控制器和模型的最佳方法

来自分类Dev

控制器中的get和post方法。Ruby on Rails

来自分类Dev

Spring中的异步控制器和方法

来自分类Dev

使用@RolesAllowed和@PreAuthorize保护控制器方法

来自分类Dev

使用Laravel 5 [phpunit]的测试方法和控制器

来自分类Dev

当我也使用指令控制器时,从指令中调用控制器方法。

来自分类Dev

如何使用HeadLink帮助器从控制器包含CSS和JS文件

Related 相关文章

  1. 1

    使用fxml作为fxml中的组件时,JavaFX FXML无法正确看到我的控制器方法“未在根组件上定义控制器”

  2. 2

    我无法从ExtJS的控制器中获取组件

  3. 3

    EmberJS关于控制器,服务和组件使用的建议

  4. 4

    如何使用Angular 1.5和Typescript在组件控制器中获取绑定值?

  5. 5

    如何使用Angular 1.5和Typescript在组件控制器中获取绑定值?

  6. 6

    Cake:以组件中的静态方法访问控制器

  7. 7

    使用控制器中的集线器方法?

  8. 8

    angularJs组件和控制器

  9. 9

    包含和访问父控制器

  10. 10

    $ on非组件控制器中的更改

  11. 11

    无法路由到控制器中的方法

  12. 12

    无法从控制器中的ApplicationHelper模块调用方法

  13. 13

    无法路由到控制器中的方法

  14. 14

    会话方法无法在控制器中调用2次

  15. 15

    LARAVAL - 无法在控制器方法中调用函数

  16. 16

    无法从控制器中的 HTTP 方法获取回调

  17. 17

    无法连接到控制器中的方法

  18. 18

    具有angularJS组件1.5的组件控制器中$ element和$ attrs的用途

  19. 19

    无法使用Ajax调用控制器操作方法

  20. 20

    如何在Rails 3.2中的视图和控制器中使用下划线方法?

  21. 21

    Angular:无法使用服务访问控制器中的变量

  22. 22

    无法使用芯片值更新控制器中的模型

  23. 23

    在Codeigniter中命名控制器和模型的最佳方法

  24. 24

    控制器中的get和post方法。Ruby on Rails

  25. 25

    Spring中的异步控制器和方法

  26. 26

    使用@RolesAllowed和@PreAuthorize保护控制器方法

  27. 27

    使用Laravel 5 [phpunit]的测试方法和控制器

  28. 28

    当我也使用指令控制器时,从指令中调用控制器方法。

  29. 29

    如何使用HeadLink帮助器从控制器包含CSS和JS文件

热门标签

归档