0

我希望你能原谅我糟糕的英语,我讨厌自动翻译服务......所以我自己写。xD

我在 cakePHP 2.1 中工作,但代码不是我的。出于某种原因,当我创建一个带有正确控制器的新视图时,系统会将我重定向到根目录。因此,我无法创建新视图。当然,视图存在于控制器中,因为我添加了它。

例如,我将此代码添加到cake/Controller/DocumentsController.php

  function add_pago() {
     //I code for food.
  }

cake/Views/Documents/add_pago.ctp在 php 标记之后创建了一个用这个随机代码调用的新文件:

 echo "hello, world!";

DocumentsController.php 中没有 beforeFilter() 函数。在 AppController.php 中,beforeFilter 函数如下所示:

 public function beforeFilter() {
    //Configure AuthComponent
    //$this->Auth->allow('display');
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
    $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'display', 'home');
    if(!empty($this->data)) array_walk_recursive($this->data, array($this, '__whitespace'));
}

简单 ACL 处于活动状态。程序员不记得他做了什么来得到这种行为。我不知道如何解决这个问题。

你有什么建议可以找到代码中的哪个位置?

4

1 回答 1

0

$this->Auth->allow('add_pago');在您的beforeFilter回调中使用。

public function beforeFilter() {
    //Configure AuthComponent
    //$this->Auth->allow('display');
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
    $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'display', 'home');
    if(!empty($this->data)) array_walk_recursive($this->data, array($this, '__whitespace'));
    $this->Auth->allow('add_pago');

    parent::beforeFilter();
}
于 2013-11-13T14:59:37.667 回答