2011-07-26 53 views
0

我從CakePHP獲取控制器中的缺失操作,但操作主目錄在我的控制器中定義,我爲它創建了一個空視圖。CakePHP - 操作未在控制器中定義

<?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')); 
+0

你想從訪問該網頁的網址是什麼? –

+0

http:// localhost/trunk/dafe/pages/home – 8vius

+1

如果您修改了PagesController,則需要更改默認路由。 –

回答

2

試試這個:

<?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

刪除Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));在routes.php文件

和修改根路徑路線:Router::connect('/', array('controller' => 'pages', 'action' => 'home'));(它是可選的,但也許你會想要的)

+0

它已被註釋掉了,我添加了路由,仍然沒有工作 – 8vius

+0

你還有什麼其他的路線? –

+0

我的登錄和註銷操作路由 – 8vius