gpt4 book ai didi

php - cake php AppController 和继承

转载 作者:行者123 更新时间:2023-12-02 06:44:16 24 4
gpt4 key购买 nike

在很多cakephp中的Acl组件的教程中我得到了在 AppController 或所有其他继承 AppController 的 Controller 中添加组件的指令......

但问题是

var $components=array('Auth',Acl);

当我在 AppConroller 中使用以上行时,我无法使用 Auth 或 Acl 组件...但是当我在所有子类中使用相同的代码时,它工作正常............

会有什么问题

这是我的应用程序 Controller

<?php
class AppController extends Controller {

var $helpers = array('Html', 'Form', 'Session','CssMenu');
var $components = array('Auth');

function beforeFilter() {
//Configure AuthComponent
$this->Auth->authorize = 'actions';
$this->Auth->authError = "Sorry, you are lacking access.";
$this->Auth->userModel = 'Login';
}

}
?>

用户 Controller 代码

<?php
class userssController extends AppController{
var $name="Logins";
//var $components = array('Auth');
var $layout='login';

function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('*');
$this->Auth->loginRedirect = array('controller' => 'homes', 'action' => 'index');
}
}
?>

当我评论第 4 行时,这将是一个错误取消评论它工作正常提前致谢

我们将不胜感激。

最佳答案

我设法做到了这一点。我有一对共享一些方法的 Controller ,但应用程序中的其他 Controller 没有(也不能)使用这些方法,因为某些数据必须存在于模型中。此外,不应允许在 URL 中调用包含共享方法的 Controller ,这是一个额外的挑战。

  1. 在您的 Controller 文件夹中创建一个名为 shared_controller.php 的 Controller 。在其中定义一些共享方法,并确保它扩展了 AppController:

    class SharedController extends AppController {
  2. 我的子 Controller 正在扩展 AppController。改为改为扩展 SharedController。我无法让共享 Controller 自动加载,所以我在上面添加了一个 App::import:

    App::import('Controller', 'Shared');
    class SubController extends SharedController {
  3. 组件和助手必须手动合并到它们的父变量中;否则子类将覆盖它们。在每个子 Controller 中定义一个 __construct 方法,并在组件、助手和其他任何东西上调用 array_merge。最后调用父构造函数。注意:这不能在 beforeFilter 中完成

    function __construct(){
    $this->components = array_merge($this->components,array('Mycomponent'));
    parent::__construct();
    }
  4. 如果您调用 http://example.com/shared/method ,您可能会收到一条错误消息,提示您缺少数据库表或缺少 View 。我不需要直接调用 Shared 中的任何方法,所以我定义了一个只重定向到主页的路由:

    Router::connect('/shared/*', array('controller' => 'pages', 'action' => 'display', 'home'));

希望对某人有所帮助!

关于php - cake php AppController 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com