nepster-web/yii2-faceviewer-widget

用户视图显示小部件

安装: 287

依赖: 0

建议者: 0

安全: 0

星标: 7

关注者: 3

分支: 4

开放问题: 0

类型:yii2-widget

v1.0.1 2015-08-14 12:57 UTC

This package is auto-updated.

Last update: 2024-09-23 00:19:20 UTC


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 - 视图模板。可以是字符串或回调函数。

{face} - 转换为图像。

额外的属性应与 data 中的属性匹配。例如,如果模板中指定了 {name},则将在 data 数组或用户模型的属性中(如果指定了其标识符 userId)查找 name 的值。

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 方法中。