Программирование, веб-кодинг

Функция $model->url() для вывода URL в виде

Функция $model->url() для вывода URL в виде

Полезно создать в модели функцию, которая будет отвечать за формирование URL. Затем её будет удобно использовать в видах, чтобы каждый раз не прописывать Url.

В модели добавляем следующий метод

Yii2:

public function getUrl()
{
    return Url::toRoute(['/blog/view', 'id' => $this->id, 'alias' => $this->alias]); // абсолютный роут вне зависимости от текущего контроллера 
}

Yii:

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


Теперь в виде можно обращаться к этой функции

Yii2:

<?= Html::a('<h2 class="post-title">'.Html::encode($model->title).'</h2><h3 class="post-subtitle">'.Html::encode($model->subtitle).'</h3>', $model->url);?>

Yii:

<?php echo CHtml::link(CHtml::encode($data->title), $data->url, $itemOptions=array('class'=>'header3')); ?>

или

<a href = "<?=$data->url;?>">

В Yii2 список создаётся виджетом LtisView и в видех _view vj;yj использовать $model. В Yii - для доступа к свойствам dataProvider используется переменная $data. Этим и обусловлено обращение к $model и к $data для разных версий фреймворка.