CakePHP - Действие не определено в контроллере - PullRequest
0 голосов
/ 26 июля 2011

Я получаю недостающее действие в контроллере от CakePHP, но действие home определено в моем контроллере, и я создал для него пустое представление.

<?php
class PagesController extends AppController {

    var $name = 'Pages';
    var $uses = array('Event', 'News', 'Person', 'Signup', 'Workshop', 'Course');

    function home() {
        $this->layout = 'main';
    }

    function news() {

    }

    function events() {

    }
}
?>

Это мой файл маршрутов:

<?php

    Router::connect('/login', array('controller' => 'users', 'action' => 'login'));
    Router::connect('/admin/logout', array('controller' => 'users', 'action' => 'logout'));
    Router::connect('/', array('controller' => 'pages', 'action' => 'home'));

Ответы [ 2 ]

2 голосов
/ 11 апреля 2012

Попробуйте это:

<?php
class PagesController extends AppController {

var $name = 'Pages';
var $uses = array('Event', 'News', 'Person', 'Signup', 'Workshop', 'Course');

function display() {

    $path = func_get_args();

    $count = count($path);
    if (!$count) {
        $this->redirect('/');
    }
    $page = $subpage = $title_for_layout = null;

    if (!empty($path[0])) {
        $page = $path[0];
    }
    if (!empty($path[1])) {
        $subpage = $path[1];
    }
    $this->set(compact('page', 'subpage', 'title_for_layout'));

    switch ($page) {
        case 'home':
            $this->_home();
            $this->render('home');
        break;
        default:
            $this->render(implode('/', $path));
    }
}

function _home() {
    $this->layout = 'main';
}

function news() {

}

function events() {

}
}
?>

И разместите эту строку в верхней части ваших маршрутов:

    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
1 голос
/ 26 июля 2011

удалите Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display')); в вашем маршруте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...