Php 如何在actionView中为yii中的渲染提供多个条件

Php 如何在actionView中为yii中的渲染提供多个条件,php,yii,Php,Yii,我有一个具有不同渲染条件的模块,所以我使用了 if($p_id != '') { $this->render('view', array( 'model' => $this->loadModel($id, 'Supplier'), 'modeln' => $this->loadModel($p_id, 'Permit'), )); } else { $this-&

我有一个具有不同渲染条件的模块,所以我使用了

    if($p_id != '') {
        $this->render('view', array(
          'model' => $this->loadModel($id, 'Supplier'),
          'modeln' => $this->loadModel($p_id, 'Permit'),
        ));
    } else {
        $this->render('view', array(
          'model' => $this->loadModel($id, 'Supplier'),
        ));

它工作正常,但我有5到6个这样的条件,所以我如何处理这个?还有比这更简单的方法吗?谢谢

此问题有两种解决方案:

  • 在控制器内添加条件并基于条件渲染多个视图。(如您所做)

  • 只有一个视图,在视图中添加条件,并根据条件显示所需的视图部分


  • 所有这两个解决方案都是可以实现的,但我相信第一个解决方案更好。因为第二个解决方案与MVC结构不一致将逻辑放在视图中不是一个好主意。因此我认为根据条件渲染不同的视图更好。

    有几种方法

  • 切换案例以将视图和模型数据作为数组返回
  • 使$p_id和视图名称更有意义。甚至,作为:

    $views=array(
    'p_id'=>'对应的_视图文件'
    );


  • 然后,将其用作
    $this->loadModel($p_id,$views[$p_id])

    最好问
    XXXXXXXXX是一个更好的选择吗
    我如何处理这个问题被认为是一个广泛的问题,不太可能在这个网站上得到答案