Не могу обновить проект до CakePHP-2.0 - PullRequest
2 голосов
/ 21 октября 2011

Проект разработан с CakePHP-1.3

Сейчас я пытаюсь перейти на CakePHP-2.0

Я переименовал все контроллеры и режим с соглашениями CakePHP-2.0.

Теперь, если я перезагружаю страницу, я получаю ошибку, подобную этой:

Indirect modification of overloaded property PostsController::$Auth has no effect [APP/Controller/PostsController.php, line 11]

код:

PostsController:

$this->Auth->allowedActions =
        array('index','view','archive','listarchive','viewfromcategory','tags','aboutme','contact','polls');

AppController:

class AppController extends Controller {
    var $components = array('Acl', 'Session', 'Auth','RequestHandler');
    //var $helpers = array('Html', 'Form','Js','Session','Cache');
    var $helpers = array('Html', 'Form','Js','Session');

    function beforeFilter() {
        //Configure AuthComponent           
        $this->Auth->actionPath = 'controllers/';

        $this->Auth->allowedActions = array('display');

        //$this->Auth->authorize = 'actions';
        $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
        $this->Auth->logoutRedirect = array('controller' => 'posts', 'action' => 'index');
        $this->Auth->loginRedirect = array('controller' => 'posts', 'action' => 'index');
    }

Как я могу исправить эту проблему?

Ответы [ 2 ]

3 голосов
/ 21 октября 2011

Как указано в руководстве по миграции Cake 2.0 :

AuthComponent

AuthComponent был полностью переработан для 2.0, это было сделано для помочь уменьшить путаницу разработчиков и разочарование. К тому же, AuthComponent стал более гибким и расширяемым. Вы можете узнать подробнее в руководстве Аутентификация .

Вы получаете эту ошибку из-за изменений в ядре CakePHP, поэтому вы должны скорректировать свой код в соответствии с новыми руководствами.

Я столкнулся с той же проблемой при изменении массива данных внутри контроллера:

$this->data['foo'] = 'bar';

и пришлось переключить это, чтобы использовать новый объект CakeRequest:

$this->request->data['foo'] = 'bar';
1 голос
/ 25 октября 2011

Чтобы исправить предупреждение, вы можете попробовать:

В вашем "PostsController" заменить:

$this->Auth->allowedActions =
    array('index','view','archive','listarchive','viewfromcategory','tags','aboutme','contact','polls');

На

$this->Auth->allow(array('index','view','archive','listarchive','viewfromcategory','tags','aboutme','contact','polls'));
...