0

我想构建一个应用程序(电子商店),其中每个块(部分)都可以单独呈现(使用 pAJAX 为这些块提供服务),但同时,如果直接请求,我想获取整个页面。让我通过例子来解释它。

电子商店目录页面由以下块(部分)组成:

  1. 产品
  2. 消息
  3. 页脚
  4. 大车

电子商店索引页面由以下块(部分)组成:

  1. 文章
  2. 消息
  3. 页脚
  4. 大车

电子商店产品页面由以下块(部分)组成:

  1. 产品
  2. 消息
  3. 页脚
  4. 大车

因此,如果我请求“/catalog/robots”,我会得到一个包含所有块渲染的页面,但是当我请求“/block/cart”时,我只想获取购物车上的部分内容。

如何正确设计控制器(和视图),这样我就不必在每个 ProductsController、ProductController、IndexController(例如)中一次又一次地获取购物车产品?我可以做类似的事情:

class IndexController extends \Phalcon\Mvc\Controller {

  use CartController;
  use NewController;
  ....

}

我怎样才能按照我的计划设计一切工作?

4

1 回答 1

0

我可能会有一堆非常薄的控制器,它们扩展了一个更强大的基本控制器

class ShopBaseController extends \Phalcon\Mvc\Controller {

    public function getNews( $limit=10 )
    {
        $news = \App\News::find(
            'query stuff here'
           ,'limit'=>$limit
        );

        $this->view->setVar('news', $news); 
    }

    public function getProducts( ... ){ ... }

    public function getCart( ... ){ ... }

    public function getSpecials( ... ){ ... }

}

class IndexController extends ShopBaseController {

    public function indexAction(){
        $this->getNews(10);
        $this->getProducts(array(
            // product params
        ));
        $this->getCart();
        $this->getSpecials();
    }

}

class CatalogController extends ShopBaseController {

    public function indexAction(){
        $this->getNews(5);
        $this->getProducts(array(
            // product params
        ));
        $this->getCart();
        $this->getSpecials();
    }
}

然后是意见

<div>
    <?=$this->partial('blocks/news', array( 'news'=>$news ))?>
</div>

ETC

于 2013-11-11T14:55:48.973 回答