Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nepster-web/yii2-faceviewer-widget
Виджет для отображения представления пользователя
https://github.com/nepster-web/yii2-faceviewer-widget
Last synced: about 1 month ago
JSON representation
Виджет для отображения представления пользователя
- Host: GitHub
- URL: https://github.com/nepster-web/yii2-faceviewer-widget
- Owner: nepster-web
- Created: 2014-09-25T11:50:34.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-08-14T13:00:40.000Z (over 9 years ago)
- Last Synced: 2024-10-12T02:26:33.745Z (3 months ago)
- Language: PHP
- Size: 198 KB
- Stars: 7
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
FaceViewer Widget for Yii 2
===========================Виджет для отображения представления пользователя (например аватарки или фотографии).
FaceViewer может быть полезен, в случае, когда необходимо показывать представление пользователей по различным шаблонам и делать это частно. Например: аватарки в сообщениях пользователей, фотографии в отзывах, изображение профиля и др.Пример отображения
------------------![alt text](images/15fi39d.jpg.png "")
Установка
---------Предпочтительный способ установки этого виджета через [composer](http://getcomposer.org/download/).
Запустите в консоле
```
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` - Вернуть только изображение без дополнительных тегов.
**Пример использования:**
```php
= \nepster\faceviewer\Widget::widget([
// шаблон отображения
'template' => '{face}
{username}{name} {surname}
',
// Поле текущего изображения
'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](images/m7qhcg.jpg.png "Аватарка, Логин, Имя и Фамилия")**Дополнительные примеры:**
```php
'{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
'{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
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](https://github.com/yiisoft/yii2/blob/master/docs/guide/concept-di-container.md):
```php
// Настройки по умолчанию для виджета 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` общего контроллера.