【问题标题】:How to add a "Top happenings/Recent Updates" section to a website built with Symfony 1.4?如何向使用 Symfony 1.4 构建的网站添加“热门事件/最近更新”部分?
【发布时间】:2011-11-30 13:51:11
【问题描述】:

我正在使用 symfony 1.4 开发一个网站。用户上传照片,照片保存在数据库中。

现在在主页上,我有一些内容,我想有一个部分显示最近上传的照片。我不确定这样做的最佳方法是什么。你能指出我正确的方向吗?

我能想到的唯一方法是让$sf_content 保存主要内容(将来自应用程序/模块),对于最近的上传,让layout.php 进行数据库访问+业务逻辑+渲染,但这会违反 MVC 并且每次用户在网站中导航时都会涉及大量的数据库访问。

可以做得更好吗?

【问题讨论】:

    标签: php model-view-controller symfony1 doctrine symfony-1.4


    【解决方案1】:

    你可以使用组件。

    apps/yourapp/modules/yourmodule/actions/components.class.php

    class yourmodulenameComponents extends sfComponents {
    
    
        public function executeRfoto() {
    
            $this->photos = Doctrine_Core::getTable('Photo') ->getRecentPhotos();
    
        }
    

    模型中:

    public function getRecentPhotos()
      {
        $q = $this->createQuery('a')
                  ->addORDERBY('DESC');
    
        return $q->execute();
      }
    

    在你的 apps/yourapp/modules/yourmodule/themplates/_rfoto.php

        foreach ($photos as $photo){
    // Make some stuff
    }
    

    并且在 layout.php 中,或者您想要放置照片的其他地方:

       <?php include_component('yourmodule' ,'rfoto')?>
    

    【讨论】:

    • 感谢回复,但是会减少数据库访问量吗?
    • 我认为这种方式是 symfony 方式,在你的情况下你有非常简单的查询(从一个表中获取 10 或 20 个最后的图像),我认为在你的情况下不会是一些关键加载。
    • 实际情况不同。图片上传只是它的一个更简单的版本。那么有没有更好的方法呢?
    • 你也可以启用APC,你可以在这里阅读Symfony meets APC (Alternative PHP Cache)。你的项目每小时有多少用户?
    • 不多。 10-20左右。所以我想这不会是一个问题。而且我已经在使用 APC。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多