PHP-Yii-我可以访问模型';s数据在视图文件中,但在其控制器中具有getUrl.如何访问此


PHP - Yii - I can access model's data in a view file, but have the getUrl in its controller. How do i access this?

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函数。我该怎么做?

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

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);
}

我认为这对你有帮助。

尝试此if (Yii::app()->controller) Yii::app()->controller->createUrl()