我是YII的初学者。 我想问一下,我有两个不同表的模型,没有关系。 例。模型用户和模型产品。 所以在用户控制器中我的代码是
public function actionIndex() {
$model= new Product;
$dataProvider=new CActiveDataProvider('User');
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
$this->renderPartial('application.views.Product.view',array('model'=>$model));
}
但是记录无法显示,只是属性。
所以,我可以在一个页面中显示用户记录和产品记录。在CI我写了
$data['user']= $this->user->record();
$data['product']=$this->product->record();
$this->load->view('index',$data)
所以,我的问题。我应该如何编写多个表格来渲染多个模型,并且在yii的一个页面中没有相互关系?
答案 0 :(得分:0)
你应该在渲染视图中使用renderPartial(),因为作为it's documented,render():
使用布局呈现视图。
此方法首先调用renderPartial来呈现视图(称为内容视图)。然后,它呈现可以将内容视图嵌入适当位置的布局视图。在布局视图中,可以通过变量$ content访问内容视图呈现结果。最后,它调用processOutput以插入脚本和动态内容(如果可用)。
public function actionIndex() {
$model= new Product;
$dataProvider=new CActiveDataProvider('User');
$this->render('applicationindex',array(
'dataProvider'=>$dataProvider,
));
}
然后在视野中,
$this->renderPartial('application.views.Product.view',array('model'=>$model));
答案 1 :(得分:0)
(IDK this-> renderPartial工作,我尝试使用你的代码但只出现一条记录,实际上我还有1000条记录)
我用2种不同的方法解决了这个问题,用于渲染具有多个表而没有关系的多个模型。
第一种方法我使用了widget。
在组件文件夹中创建小部件
class ProductWidget extends CWidget {
public function run() {
$models = Product::model()->findAll(array('condition'=>'product_token="A"'));
$this->render('category', array(
'models'=>$models
));
}
}
然后在“组件/视图”中为此窗口小部件创建视图
<?php if($models != null): ?>
<ul>
<?php foreach($models as $model): ?>
<li><?php echo $model->product_token; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
最后在Views(layouts / column)文件夹中我写这个
<?php $this->widget('ProductWidget'); ?>
第二种方法(用户控制器中的Function actionIndex)
public function actionIndex() {
$models = Product::model()->findAll(array('condition'=>'Product_token="A"'))
$dataProvider=new CActiveDataProvider('User');
$this->render('index',array(
'dataProvider'=>$dataProvider,
'models' => $models,
));
和最后的观点。 (浏览/使用/指数)
<?php foreach($models as $model):
echo $model->product_token;
endforeach;
?>
我认为第二种方法更好,你可以添加分页或其他东西。