在控制器/操作下创建多个登录页面的最佳方法是什么?

时间:2013-03-07 10:12:51

标签: zend-framework

我正在使用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

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

2 个答案:

答案 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
    }

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

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

如果您需要为不同的促销样式使用几种不同的布局,可以使用其他布局。

祝你好运。