PHP - Yii - я могу получить доступ к данным модели в файле представления, но у меня есть getUrl в его контроллере. Как я могу получить доступ к этому? - PullRequest
0 голосов
/ 05 февраля 2012

PHP - Yii - я могу получить доступ к данным модели в файле представления, но у меня есть getUrl в его контроллере. Как я могу получить доступ к этому?

В принципе, в yii у меня есть модель и настроенный контроллер. в контроллере для определенных моделей (видео) у меня есть функция getUrl.

на главной странице я отредактировал вид, чтобы включить последние сообщения. я делаю это в views / site / index.php с:

    <?php $this->widget('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 ]

2 голосов
/ 06 февраля 2012

В вашей модели видео напишите следующий метод ...

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

и виджет "Последние видео" имеет следующий код:

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

Я думаю, что это помощь для вас.

0 голосов
/ 06 февраля 2012

Попробуйте это if (Yii::app()->controller) Yii::app()->controller->createUrl()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...