0

我正在使用 Zend 框架。

目前我有一个这样的结构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

我认为这不是一个好方法,这样做的惯例是什么?

4

2 回答 2

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
    }

您所有的促销活动在形式和布局上都应该非常相似。只需要不同的信息和艺术来区分它们。一个简单的实体模型应该能够将数据源提供给视图脚本。

如果每个促销都需要完全不同的视图脚本,您可能需要重新考虑页面的结构。

如果您需要为不同风格的促销使用几种不同的布局,可以使用替代布局来完成。

祝你好运。

于 2013-03-08T13:48:34.093 回答
0

我不确定是否有任何这样的特定标准方法,根据复杂性,您的方法也可以。我一般是怎么做的

http://mysite.com/page/promotion/promote/first

在我的控制器中,我会这样做,

$promote = $this->_getParam("promote", false);

if($promote) {
   $this->render('promo'.$promote);
} else {
   $this->render('promotion');
}

但是你可能不得不以同样的方式命名你的观点。

于 2013-03-07T11:26:11.180 回答