@akula22

Вывод аватара одним методом, как это сделать на ООП?

Только изучаю ооп и Yii2.
Хочу выводить аватар юзера простым методом, но надо сделать проверку, есть ли аватар в базе, есть ли файл в папке.
А мне надо просто написать в одном месте <?= \modules\user\Module::getAvatar($model->user->profile->avatar)?> и метод вернул html::a(img и тд

в модуле юзера определяю св-ва
public static $avatarPath = '@app/public_html/upload/images/avatar';
public static $avatarUrl = '/upload/images/avatar';
public static $noAvatar = '/upload/images/avatar/noavatar.png';

а вот как сам метод нарисовать не соображу
  • Вопрос задан
  • 331 просмотр
Пригласить эксперта
Ответы на вопрос 3
sanchezzzhak
@sanchezzzhak
Ля ля ля...
не проще в модели сделать метод узера
А во вьюхе вывести что то такое
<?php if(!Yii::$app->user->isGuest):?>
        <?=yii\helpers\Html::img( Yii::$app->user->getIdentity(true)->getAvatar() )?>
    <?php endif;?>


ps Yii::$app->user->getIdentity(true) Нужно вызвать единоразово с true параметром все остальные разы лучше использовать с false параметром.

Обратится из вьюхи к модулю можно так
$this->context->module
Сам $this->context текущий контроллер/экшен/виджет

Вариант 3 Создать статик метод где хотите.
Ответ написан
Поставь расширение с гитхаба costa-rico/yii2-images, там из коробки будет таблица в базе, и метод который будет выводить аватарку, либо урл до аватарки, также есть функционал по динамической нарезки нужны размеров
Ответ написан
@Igorrebega
В модели Profile делаеш метод
function getAvatar(){
 if($this->photo){
  return $this->AvatarUrl. $this->photo;
 }
 return $this->noAvatar;
}


Дале в view

<?= Html::img($model->user->profile->avatar);?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы