cakePHP中的动态页面

时间:2011-04-01 07:58:07

标签: php cakephp dynamic cakephp-1.3

所以我一直在用cakePHP创建我的第一个客户端网站,并遇到了问题。

我正在尝试创建一个类似于WordPress的系统,您可以在其中创建新页面(只是标题,slug和内容),并且它们可以提供给他们的slug地址(即将在mysite.com/about上提供关于)。

我已经创建了自己的控制器& 'Pages'的模型(覆盖核心页面控制器),并设置了简单的函数(view,admin_add,admin_delete)。我的模型很简单,只需$ name就可以连接到db。

我很确定我的问题在于config / routes.php。这是我目前正在使用的代码:

App::import('model', 'Page');
$Page = new Page();
$pages = $Page->find('list', array('fields' => array('id', 'slug')));
Router::connect('/:pages', array('controller' => 'pages'), array('Page' => implode($pages, '|')));

虽然它不起作用。当我访问我有一个页面(即mysite.com/newpage)时,它告诉我找不到新的页面控制器。

请帮助!我的时间紧迫:)

谢谢,

〜哈雷

1 个答案:

答案 0 :(得分:4)

您需要扩展Class CakeRoute。将自定义模型代码放在那里,然后将该类名传递给routes.php中的路由定义

routes.php看起来像这样。

App::import('Lib', 'routes/MyCustomRoute');
Router::connect('/:page', array('controller'=>'pages', 'action'=>'display'), array('routeClass' => 'MyCustomRoute'));

然后在libs / routes / my_custom_route.php

中结束
class MyCustomRoute extends CakeRoute {
function parse($url) {
    $params = parent::parse($url);
    //import your model
    App::import('Model','Page');
    //create model object
    $Page = new Page();
    //find using $params['page'];
    if($Page->find('first', array('conditions'=>array('page.slug'=>$params['page'])))){
         //return $params if successfull match 
       return $params
    } else 
       return false;
    //return false to fall through to next route.

}