PHP - Yii - 我可以在视图文件中访问模型的数据,但在其控制器中有getUrl。我如何访问这个?

时间:2012-02-05 13:33:29

标签: php model-view-controller yii

PHP - Yii - 我可以在视图文件中访问模型的数据,但在其控制器中有getUrl。我如何访问这个?

基本上,在yii中,我有一个模型和控制器设置。在某个模型(视频)的控制器中,我有一个名为getUrl的函数。

在主页上我编辑了视图以包含最新帖子。我在 views / site / index.php 中执行此操作:

    <?php $this->widget('LatestVideos'); ?>

并且LatestVideos小部件有以下代码:

<?

Yii::import('zii.widgets.CPortlet');

class LatestVideos extends CPortlet {
public $title='Tags';
public $maxVideos = 20;
protected function renderContent() {
    $criteria = new CDbCriteria;
    $criteria->limit=$maxVideos;        
    $vids = Video::model()->findAll();
    foreach($vids as $video) {
        $link = Yii::app()->createUrl('video/view', array(
            'id'=>$video->id,
            'title'=>$video->video_title,
        ));
        echo '<a href="' . $link . '">' . $video->video_title . '</a>';
    }

正如您所看到的,在该小部件中,我可以直接从小部件到模型获取有关最新视频的信息。我跳过控制器。我需要访问控制器以正确访问getUrl函数。我该怎么做?

2 个答案:

答案 0 :(得分:2)

在您的视频模型中编写以下方法......

public function getUrl(){
    return Yii::app()->createUrl('video/view', array(
        'id'=>$this->id,
        'title'=>$this->video_title,
    ));
}

并且LatestVideos小部件有以下代码:

Yii::import('zii.widgets.CPortlet');
class LatestVideos extends CPortlet {
public $title='Tags';
public $maxVideos = 20;
protected function renderContent() {
$criteria = new CDbCriteria;
$criteria->limit=$maxVideos;        
$vids = Video::model()->findAll();
foreach($vids as $video) {
    echo CHtml::link(CHtml::encode($video->video_title), $video->url);
}

我认为这对你有帮助。

答案 1 :(得分:0)

试试这个if (Yii::app()->controller) Yii::app()->controller->createUrl()