如何在 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 个这样的情况,那么我该如何处理呢?还有比这更简单的方法吗?谢谢
这个问题有两种解决方法:
在控制器中添加条件并根据条件渲染多个视图。(如您所愿)
只有一个视图并在视图中添加条件并根据条件显示所需的视图部分。
这两个解决方案都是可以实现的,但我认为第一个解决方案更好。因为第二种方案与MVC结构不一致。 将逻辑放在视图中不是一个好主意。所以我认为根据条件呈现不同的视图更好。
有几种方法。
- 将案例切换到 return 视图和模型数据作为数组。
使 $p_id 和视图名称更有意义。甚至,如:
$views = array(
'p_id' => 'corresponding_view file'
);
然后以后,将其用作$this->loadModel($p_id, $views[$p_id])
,
我有一个模块在不同的条件下有不同的渲染,所以我使用了类似的
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结构不一致。 将逻辑放在视图中不是一个好主意。所以我认为根据条件呈现不同的视图更好。
有几种方法。
- 将案例切换到 return 视图和模型数据作为数组。
使 $p_id 和视图名称更有意义。甚至,如:
$views = array( 'p_id' => 'corresponding_view file' );
然后以后,将其用作$this->loadModel($p_id, $views[$p_id])
,