如何正确使用视图中的关联?

时间:2014-05-14 22:28:56

标签: php model doctrine-orm zend-framework2

我想制作简单的输出。这是list.phtml的一部分:

// more code
<td>
    <a href="<?=$this->url('news', array('action'=>'full', 'id' => $item['id']));?>"><?=$item['title'];?></a> 
</td>
<td>
    <?=$item['category']->getName();?>
</td>
<td>
    <?=$item['user']->getDisplayName();?>
</td>
// more code

如您所见,我在a标签,类别名称和用户名中输出名称。我正在使用模型,因此$item['category']是类Category的对象,$item['user']是类User的对象。

问题是它是正确的以这种方式获取值还是我应该在控制器中以某种方式执行它?

1 个答案:

答案 0 :(得分:2)

不是将整个对象传递给视图并在其中调用其方法,而是在控制器操作中返回一个数组,该数组具有您需要在视图文件中使用的确切视图变量。

像这样:

class FooController extends FooClass
{
    public function listAction()
    {
        // do stuff

        // setting view variables
        return array(
            'category_name' => $your_object->getName(),
            'display_name'  => $your_object2->getDisplayName()
        );
    }
}

在您的视图文件中,您需要做的就是:

<td>
    <?php echo $this->category_name;?>
</td>
<td>
    <?php echo $this->display_name;?>
</td>