我想构建一个应用程序(电子商店),其中每个块(部分)可以单独呈现(使用pAJAX服务这些块),但同时,我想获得整个页面,如果它是直接要求。让我通过例子解释一下。
电子商店目录页面包含以下块(部分):
电子商店索引页面包含以下块(部分):
电子商店产品页面包含以下块(部分):
因此,如果我请求“/ catalog / robots”,我会得到一个包含所有渲染块的页面,但是当我请求“/ block / cart”时,我只想获得部分购物车内容。
如何正确设计控制器(和视图),所以我不必在每个ProductsController,ProductController,IndexController(例如)中反复获取购物车产品?我可以这样做:
class IndexController extends \Phalcon\Mvc\Controller {
use CartController;
use NewController;
....
}
如果我计划工作,我如何设计所有工作?
答案 0 :(得分: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>
等