定制 nepster-web/yii2-faceviewer-widget 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

nepster-web/yii2-faceviewer-widget

Composer 安装命令:

composer require nepster-web/yii2-faceviewer-widget

包简介

Виджет для отображения представления пользователя

README 文档

README

Виджет для отображения представления пользователя (например аватарки или фотографии).
FaceViewer может быть полезен, в случае, когда необходимо показывать представление пользователей по различным шаблонам и делать это частно. Например: аватарки в сообщениях пользователей, фотографии в отзывах, изображение профиля и др.

Пример отображения

alt text

Установка

Предпочтительный способ установки этого виджета через composer.

Запустите в консоле

php composer.phar require --prefer-dist nepster-web/yii2-faceviewer-widget "*"

или добавьте

"nepster-web/yii2-faceviewer-widget": "*"

в файл composer.json в секцию require.

Конфигурации

Все настройки:

template - Шаблон представления. Может принимать как строку, так и callback функцию.

{face} - Приобразуется в изображение.

Дополнительные атрибуты должны соответствовать атрибутам в data. Например, если указать в шаблоне {name}, то поиск значения name будет выполнен либо в массиве data, либо в атрибутах модели пользователя, если указан его идентификатор (userId).

templateUrl - Заключает шаблон представление в URL адрес.

templateUrlOptions - Если шаблон представления заключен в URL адрес, то можно добавить любые атрибуты к ссылке.

data - Массив данных, которые подставляются в шаблон ({name} будет соответствовать $data['name']).

userId - Если мы работаем с пользователями, то вместо data можно указать идентификатор пользователя, тогда faceviewer сам получит всю необходимую информаци.

userModel - неймспейс модели пользователя.

userProfileRelated - название реляции на профиль пользователя.

userModelAttributes - Атрибуты пользователя, которые будут получены при запросе.

faceField - Название атрибута, который указывает на изображение (Например: avatar_url).

facePath - Полный путь к директории, например с аватарками (@statics/uploads/avatars).

faceUrl - URL адрес к папке, например с аватарками (/statics/uploads/avatars).

faceUrlDefault - URL адрес к папке, например с аватарками по умолчанию (/statics/templates/default/avatars).

faceDefault - Имя изображения по умолчанию, например аватарки (no-avatar.png).

faceSexField - Название атрибута, который указывает на пол (Например: sex).

faceSexDefaultAvatar - Изображения по умолчанию на основе пола пользователя (Например [1 => 'male.png', 2 => 'female.png']).
Где 1 - Мужской пол, 2 - Женский пол. В качестве идентификатора 1 или 2 выступает поле указанное в faceSexField.

faceImgOptions - Атрибуты изображения.

onlyUrl - Вернуть только изображение без дополнительных тегов.

Пример использования:

<?= \nepster\faceviewer\Widget::widget([
    // шаблон отображения
    'template' => '<div class="face">{face}</div> <br/> <strong>{username}</strong> <p>{name} {surname}</p>',
    // Поле текущего изображения
    'faceField' => 'avatar_url',
    // Массив Данных пользователя
    'data' => $model->user,
    // Url адрес с загруженными аватарками 
    'faceUrl' => '/statics/uploads/avatars',
    // Директория с загруженными аватарками на сервере
    'facePath' => '@statics/uploads/avatars',
    // Url адрес с аватарками по умолчанию 
    'faceUrlDefault' => '/statics/templates/default/avatars',
    // Дефолтная аватарка
    'faceDefault' => 'male.png'
]);?>

Результат: alt text

Дополнительные примеры:

<?php
// Вывод изображения включая пол
echo \nepster\faceviewer\Widget::widget([
    'template' => '{face} {name} {surname}',
    'data' => [
        'name' => 'Виктория',
        'surname' => 'Иванова',
        'sex' => 2, // К примеру 1 - М, 2 - Ж
    ],
    'faceUrl' => '/statics/uploads/avatars',
    'facePath' => '@statics/uploads/avatars',
    'faceUrlDefault' => '/statics/default',
    'faceDefault' => 'no-avatar.png',
    'faceField' => 'image_url',
    'faceSexField' => 'sex',
    // Дефолтные изображения исходя из поля sex
    'faceSexDefaultAvatar' => [
        1 => 'male.png',
        2 => 'female.png'
    ]
]);
?>
<?php
// Вывод изображения по ID пользователя
echo \nepster\faceviewer\Widget::widget([
    'template' => '{face} {name} {surname}',
    'userId' => 333,
    'faceUrl' => '/statics/uploads/avatars',
    'facePath' => '@statics/uploads/avatars',
    'faceUrlDefault' => '/statics/default',
    'faceDefault' => 'no-avatar.png',
    'faceField' => 'avatar_url',
    'userModel' => 'common\modules\users\models\User',
    'userModelAttributes' => ['name', 'surname', 'avatar_url']
]);
?>
<?php
// Использование callback-функции
echo \nepster\faceviewer\Widget::widget([
    'template' => function($data) {
        // Массив всех доступных данных
        var_dump($data);
    },
    'data' => [
        'name' => 'Иван',
        'surname' => 'Иванов',
    ],
    'faceUrl' => '/statics/uploads/avatars',
    'facePath' => '@statics/uploads/avatars',
    'faceUrlDefault' => '/statics/templates/default/avatars',
    'faceDefault' => 'no-avatar.png',
    'faceField' => 'image_url'
]);
?>

Внимание, если в Вашей структуре есть разделение таблиц пользователей и профиля, то Вы можете использовать следующий синтаксис:

'userModelAttributes' => ['username', 'profile' => ['avatar_url', 'name', 'surname'] ],

FaceViewer возьмет свойство username из главной модели, а свойства avatar_url, name и surname попробует достать из реляции профиля.

Рекомендации

Если Вы используете данный виджет неоднократно, то нет необходимости при каждом вызове виджета передевать настройки на прямую. Можно реализовать передачу конфигурации по умолчанию.

Для этого можно использовать DI:

// Настройки по умолчанию для виджета faceviewer
\Yii::$container->set('nepster\faceviewer\Widget', [
    // Url адрес с загруженными аватарками 
    'faceUrl' => '/statics/uploads/avatars',
    // Директория с загруженными аватарками на сервере
    'facePath' =>  '@statics/uploads/avatars',
    // Url адрес с аватарками по умолчанию 
    'faceUrlDefault' => '/statics/templates/default/avatars',
    // Дефолтная аватарка
    'faceDefault' => 'no-avatar.png'
]);

Предложенный код можно разместить в init необходимого модуля или в init общего контроллера.

统计信息

  • 总下载量: 294
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 7
  • Watchers: 2
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2014-09-25

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固