【问题标题】:Include a controller view in another controller view在另一个控制器视图中包含一个控制器视图
【发布时间】:2014-02-09 09:36:31
【问题描述】:

我使用 Yii 框架,我有两个模型(论坛和主题),每个论坛可以有很多主题。

现在我想在我的论坛(view.php)的视图中显示所有论坛的主题,在网上搜索后我找到了这个指令:

<?php $this->renderPartial("/topic/index",array('dataProvider' => new Topic)); ?>

但是当我尝试显示论坛视图时,我遇到了这个错误:

论坛及其行为没有名为“getData”的方法或闭包。

请帮忙。

原谅我的英语不好。

【问题讨论】:

  • 您可以发布您的查看代码吗?
  • 我使用由 CRUD 生成器生成的标准视图(文件:views/forum/view.php),但在文件底部我添加了我的指令:renderPartial( "/topic/index",array('dataProvider' => new Topic)); ?>
  • CListView 需要 CDataProvider 的实例,而不是 CActiveRecord 的实例。在 StackOverflow 为您提供帮助之前,您需要了解这些内容。
  • Mohamed khelifi,请发布您的 index.php 代码?
  • @jailedabroad 请参阅答案

标签: php yii frameworks


【解决方案1】:

受保护的/views/forum/index.php

<?php 
/* @var $this ForumController */
/* @var $dataProvider CActiveDataProvider */

$this->breadcrumbs=array(
'Forums',
 );
 echo $this->renderPartial('_menu');?>

 <h1>Forums</h1>

  <?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
  )); ?>

【讨论】:

    【解决方案2】:

    您收到此错误是因为您的示例中的 $dataProvider 是模型对象,而不是 CActiveDataProvider。如果你已经用 Gii 创建了主题模型,你会看到 Model 类中有一个 search() 方法。这个 search() 方法返回一个 CActiveDataProvider() - 这是你需要为你的 CListView 使用的:

    试试这个:

    <?php $this->widget('zii.widgets.CListView', array(
        'dataProvider'=>$dataProvider->search(), // Added search()
        'itemView'=>'_view',
    )); ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      相关资源
      最近更新 更多