【问题标题】:stubs, dynamic homepage in cakePHP存根,cakePHP 中的动态主页
【发布时间】:2011-04-27 18:42:17
【问题描述】:

我正在为希望能够更新修改其内容的客户开发一个网站。简介是允许他们编辑页面,但不能创建或删除它们。对于这个网站,我决定使用 cakePHP,因为我听说了一些好消息。

首先,快速解释一下我的设置。我有一个名为“内容”的表,我在其中存储每个页面的内容。该表有一个 pid、一个 varchar 'title'、一个 varchar 'slug' 和一个 longtext 'body'。它们都是非常自我解释的,每个页面都有自己的行,正文将是一个简单的 HTML 转储。

我遇到了两种情况。首先,是设置主页。 Cake 默认是基于 home.ctp 的 page,但它是静态的。目前,我作为主页的页面位于 localhost/alc/contents/view/2。我知道这与路由有关,但是当我需要每个细节时,大多数示例都提供了一半的解决方案:P

第二个问题是页面的蛞蝓。每个页面当前都在 /contents/view/id 下,我希望它成为数据库中的 slug。每次我尝试更改它(即修改我的索引中的视图链接)时,我都会收到一个错误,而不是页面的内容。

对此的任何帮助将不胜感激,因为有两件事我似乎无法正确掌握。谢谢!

顺便说一下,你可以在http://www.roberttilt.name/web-dev/ALC_proto/查看网站

【问题讨论】:

    标签: php cakephp cakephp-1.3 slug


    【解决方案1】:

    对于第一个问题,您需要打开 /app/config/routes.php 并更改主页的行。即:

    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
    

    需要成为

    Router::connect('/*', array('controller' => 'contents', 'action' => 'view'));
    

    在您的控制器文件 /app/controllers/contents_controller.php 中,转到操作视图并将其更改为接受空 id,即

    function view($id = null){
       if($id == null){ //Load the default home page
          $this->find('first', array('conditions'=>array('default'=>1)));
       } else {
          //load the 
          $this->find('first', array('conditions'=>array('OR'=>array('slug'=>$id, 'id'=>$id))));
       }
       .....
    }
    

    这样,如果没有提供 id 或 slug,您正在加载主页。如果其中之一被加载,只需使用它来加载所需网页的内容。

    您的链接将如下所示:

    $this->Html->link('About', array('controller'=>'contents', 'action'=>'view', $slug_var));
    

    链接将被转换为

    <a href="/your-nice-slug">About</a>
    

    可能你得看看Cookbook

    【讨论】:

    • 感谢您的帮助!其中一些效果很好,不幸的是我似乎无法让该视图功能正常工作,当它遇到 find 语句时它会继续抛出。我试图增加它,所以加载主页行是 $this->set('content', $this->Content->find('all',array('conditions'=>array('id'=>'1 '))));它停止抛出错误,但实际上仍然没有链接到主页:(
    • 好吧,你需要在你的内容表中有一个默认列,并且该默认字段需要是布尔值,并且对于数据库中的所有条目,你只需要一个 default=1 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多