【问题标题】:What is $data in _view.php of blog (demos folder) of yii framework is?yii 框架的博客(演示文件夹)的_view.php 中的$data 是什么?
【发布时间】:2012-04-05 18:00:57
【问题描述】:

我对 yii 框架的博客演示的 blog/views/post/_view.php 中的 $data 感到困惑 我如何获得 $data 的这个属性?在哪里可以找到 $data 的定义?我在源代码中找到但没有看到任何关于 author->username ,url commentCount?

的行
<div class="post">
    <div class="title">
        <?php echo CHtml::link(CHtml::encode($data->title), $data->url); ?>
    </div>
    <div class="author">
        posted by <?php echo $data->author->username . ' on ' . date('F j, Y',$data->create_time); ?>
    </div>
    <div class="content">
        <?php
            $this->beginWidget('CMarkdown', array('purifyOutput'=>true));
            echo $data->content;
            $this->endWidget();
        ?>
    </div>
    <div class="nav">
        <b>Tags:</b>
        <?php echo implode(', ', $data->tagLinks); ?>
        <br/>
        <?php echo CHtml::link('Permalink', $data->url); ?> |
        <?php echo CHtml::link("Comments ({$data->commentCount})",$data->url.'#comments'); ?> |
        Last updated on <?php echo date('F j, Y',$data->update_time); ?>
    </div>
</div>

你能帮我解释一下或给我一些链接或一些关键工作吗? 感谢一切!

【问题讨论】:

    标签: php yii


    【解决方案1】:

    请参阅CListView 的文档:

    上面的代码首先为 Post ActiveRecord 创建了一个数据提供者 班级。然后它使用 CListView 显示返回的每个数据项 由数据提供者。显示是通过名为的局部视图完成的 '_邮政'。此部分视图将为每个数据项呈现一次。 在视图中,可以通过变量 $data 访问当前数据项。 有关详细信息,请参阅 itemView。

    因此,在您的上下文中,$data 是正在呈现的帖子。

    【讨论】:

    • 但在 Post 或 PostController 的模型中我看不到属性:作者->用户名、url ....
    • @chanhle:Yii 自动读取与每个 Active Record 类关联的 DB 模式,并为每个列创建魔术属性。 relations() 函数中指定的表关系也可以作为魔术属性使用,但要小心延迟加载。所以$data-&gt;url 指的是该帖子在数据库中的url 字段的值,$data-&gt;author-&gt;username 将获取帖子的author 并返回其username 字段。查看yiiframework.com/doc/guide/1.1/en/database.aryiiframework.com/doc/guide/1.1/en/database.arr
    • $data-&gt;tagLinks 怎么样?这是哪里来的?
    • @Samson:这涉及到一点魔法。在 Yii 中,当你说$data-&gt;tagLinks$data 没有名为tagLinks 的属性时,它会尝试调用$data-&gt;getTagLinks()。这正是这里发生的情况,Post 模型包含一个被调用的函数 getTagLinks()
    【解决方案2】:

    $data 是具有单行数据的模型类的对象。 作者是与实例为 $data 的模型的另一个模型的关系。 $data->author->username 这里 username 是作者指向的模型的变量。 $data->author 也被视为一个对象。它只会对作者指向的模型执行关系查询。

    您可以在模型的关系()函数中看到模型的关系。 试试yii指南你会找到答案的。

    【讨论】:

    • relation is this here public function Relations() { // 注意:您可能需要为下面自动生成的关系调整关系名称和相关的 // 类名称。 return array('author' => array(self::BELONGS_TO, 'User', 'author_id'), 'cmets' => array(self::HAS_MANY, 'Comment', 'post_id', 'condition'=>' cmets.status='.Comment::STATUS_APPROVED, 'order'=>'cmets.create_time DESC'), 'commentCount' => array(self::STAT, 'Comment', 'post_id', 'condition'=>' status='.Comment::STATUS_APPROVED), ); }
    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多