我正在使用Zend Framework。
目前我有一个这种结构http://mysite.com/page/promotion/
我想在促销活动下创建几个目标网页,现在我这样做
$promoId = $this->_getParam("id", false);
if($promoId) {
switch ($promoId){
case 1:
$this->render('promofirst');
break;
case 2:
$this->render('promosecond');
break;
case 3:
$this->render('promothird');
break;
case 4:
$this->render('testpromotion');
break;
default:
$this->render('promotion');
break;
}
}
所以我可以通过以下方式联系我的促销活动:http://mysite.com/page/promotion/id/1
我认为这不是一个好方法,这样做的惯例是什么?
答案 0 :(得分:0)
我不确定是否有任何这样的特定标准方法,取决于复杂性,您的方法也可以。我通常如何做到,
http://mysite.com/page/promotion/promote/first
在我的控制器中,我会这样做,
$promote = $this->_getParam("promote", false);
if($promote) {
$this->render('promo'.$promote);
} else {
$this->render('promotion');
}
但是你可能必须以同样的方式命名你的观点。
答案 1 :(得分:0)
我能想到这样的最佳方式:
//get the promo from where ever you have it stored and put it into a model
$model = new My_Promo_Model();
$promoId = $this->_getParam("id", false);
if (!is_null($promoId)) {
//structure the data in your model, not in the controller if possible.
$promo = $model->getPromo($promoId);
$this->view->promo = $promo;
} else {
//do some error stuff
}
您的所有促销活动在形式和布局上应该非常相似。只需要不同的信息和艺术来区分它们。一个简单的实体模型应该能够将任何数据源提供给视图脚本。
如果每个促销需要完全不同的视图,您可能需要重新考虑页面的结构。
如果您需要为不同的促销样式使用几种不同的布局,可以使用其他布局。
祝你好运。