2014-09-29 2 views
0

Попробуйте добавить новое действие в TasksController.php, какне может создать новое действие в CakePHP

public function magic(){ 
    debug("hi"); 
    exit; 
} 

Затем загрузите страницу http://example.com/tasks/magic, но он перенаправляет на http://example.com.

Я проверил router.php уже, и никакая «магия» не определена в любом случае. И я также изменил название действия на «магическое», «myaction» и т. Д., Но не повезло, все они перенаправляются на главную страницу.

Любая идея?

+0

Посмотрите в DebugKit под «запрос» -> Текущий маршрут, чтобы увидеть, какой путь он использует. Если это так, как ожидалось, просто «эхо» что-то »; exit, 'начиная с вашего AppController's beforeFilter() и посмотреть, как далеко вы узнаете, где эта проблема. – Dave

+0

У вас есть ACL на месте, и если да, то вы дали доступ к вашему новому действию? – Nunser

+0

Спасибо Nunser! Должно быть, это так. Думаю, мне нужно восстановить ACL. –

ответ

0

Общие вещи, которые вызывают эту "проблему":

  1. private Использование или protected видимость действий. Все действия, к которым может обращаться URL, должны быть public.

  2. Падение в «пролетный ад». Вам нужно проверить, что действие использует предполагаемый маршрут. Как сказал Дейв, вы можете проверить это с помощью DebugKit в разделе «Запрос».

  3. Вы что-то проверки, не проходит проверку, и перенаправляет вас где-то еще (но вы абсолютно клянутся идентификатор устанавливается (так на самом деле действительно проверить первый))

    public function index($id=null) { 
        if (!$this->Model->exists($id)) 
         $this->redirect(/*somewhere*/); 
    
  4. Вы используете некоторые вид ACL и дерево разрешений (или что-то еще) не было обновлено после добавления нового действия. Если вы внесли свою функцию private, а затем измените ее на public без обновления, она также даст вам эту ошибку.

Это общие проблемы, которые вызывают эту проблему с действиями.

Очевидно, проблема была в ACL, но, как правило, всегда проверяйте все возможные возможные сценарии, прежде чем впадать в панику и бегать по кругу, потому что это не сработало :) Любая ошибка, которая не попадает в эти сценарии, вероятно, заслуживают нового поиска в Google и нового вопроса (если другие вопросы/ответы не помогают).

Смежные вопросы