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