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

how to give multiple conditions in actionView for render in yii

我有一个模块在不同的条件下有不同的渲染,所以我使用了类似的

    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 个这样的情况,那么我该如何处理呢?还有比这更简单的方法吗?谢谢

这个问题有两种解决方法:

  1. 在控制器中添加条件并根据条件渲染多个视图。(如您所愿)

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

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

有几种方法。

  1. 将案例切换到 return 视图和模型数据作为数组。
  2. 使 $p_id 和视图名称更有意义。甚至,如:

    $views = array( 'p_id' => 'corresponding_view file' );

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