webber12 / evocms-user

此包的最新版本(dev-master)没有提供许可证信息。

evocms 3.x 用户助手

dev-master 2024-06-28 11:21 UTC

This package is auto-updated.

Last update: 2024-09-28 11:53:11 UTC


README

安装

在文件 core/custom/composer.json 的 require 部分添加以下行

"webber12/evocms-user": "*"

然后在 core 文件夹中执行以下命令(仅更新指定的包)

composer update webber12/evocms-user

然后在同一文件夹中执行以下命令(如果包之前未安装)

php artisan vendor:publish --provider="EvolutionCMS\EvoUser\EvoUserServiceProvider"

以下是一些在控制器中使用示例

按照上下文顺序获取当前已认证用户的id(返回第一个找到的)

$currentUser = app('evouser')->do('user', ['web', 'mgr']);

指定用户的资料数据

$profile = app('evouser')->do('ProfileInfo', [ 'user' => $currentUser ]);

默认情况下,调用服务时检查配置中指定的访问权限,但可以禁用此检查 获取id为7的用户文档列表而不检查权限

$documents = app('evouser')->withoutRules()->do('DocumentListUser', [ 'user' => 7 ]);

以分页方式获取模板3的任意已发布文档列表,标题包含"商品"且价格≥20(tv)

$documents = app('evouser')->do('DocumentList', [], [
    'fields' => 'id,pagetitle',
    'tvs' => 'price,image',
    'onlyActive' => true,
    'display' => 2,
    'filters' => [
        'pagetitle' => 'товар',
        'template' => 3,
        'price' => '>=20',
    ]
]);

获取当前用户创建的文档列表(带筛选和分页输出)

$documentsUser = app('evouser')->do('DocumentListUser', [ 'user' => $currentUser ], [
    'fields' => 'id,pagetitle',
    'tvs' => 'price,image',
    'onlyActive' => true,
    'display' => 15,
    'filters' => [
        'pagetitle' => 'товар',
        'price' => '>=10',
    ]
]);

获取id为2的文档对象 $documentObject

$document = app('evouser')->do('DocumentObject', [ 'id' => 2 ]);

获取当前用户的订单列表

$orders = app('evouser')->do('OrderList', [ 'user' => $currentUser ]);

获取id为4的订单信息(订单数据、商品列表和历史记录)

$order = app('evouser')->do('OrderInfo', [ 'id' => 4 ]);

授权表单示例

<form data-evocms-user-action="auth">
    <p><b>ВХОД</b></p>
    @csrf
    <input type="text" name="username">
    <div data-error data-error-username></div>
    <input type="text" name="password">
    <div data-error data-error-password></div>
    <div data-error data-error-common></div>
    <input type="submit" value="ok">
</form>

编辑当前用户资料表单示例

    Вы вошли как <b><a href="?logout">{{ $user['username'] }}</a></b>
    <hr><hr>
    <form data-evocms-user-action="profile" data-evocms-user-user="{{ $user['id'] }}">
        <p><b>Редактирование</b></p>
        @csrf
        <input type="text" name="fullname" value="{{ $user['fullname'] ?? '' }}">
        <div data-error data-error-fullname></div>
        <input type="text" name="first_name" value="{{ $user['first_name'] ?? '' }}">
        <div data-error data-error-first_name></div>
        <div data-error data-error-common></div>
        <input type="submit" value="ok">
    </form>

字段 fullname 在编辑资料时是必填项。非常重要!所有可编辑字段数组指定在配置文件中的 ProfileEditCustomFields 规则中。

更改密码

更改密码是编辑资料的特例,因此必须遵守所有针对资料编辑的描述(必填项 fullname 和 ProfileEditCustomFields 数组中列出的所有字段)

字段列表 - old_password, password, password_confirmation 和 chpwd=1 以传输更改密码的信息。

带有 TV 图片的文档创建表单示例

<form data-evocms-user-action="document">
    <p><b>СОЗДАНИЕ ДОКУМЕНТА</b></p>
    @csrf
    <input type="text" name="pagetitle">
    <div data-error data-error-pagetitle></div>
    <input type="text" name="longtitle">
    <div data-error data-error-longtitle></div>
    <input type="text" name="image">
    <div data-error data-error-image></div>
    <div data-error data-error-common></div>
    <input type="submit" value="ok">
</form>

id为7的文档编辑示例

<form data-evocms-user-action="document" data-evocms-user-id="7">
    <p><b>РЕДАКТИРОВАНИЕ ДОКУМЕНТА</b></p>
    @csrf
    <input type="text" name="pagetitle">
    <div data-error data-error-pagetitle></div>
    <input type="text" name="longtitle">
    <div data-error data-error-longtitle></div>
    <input type="text" name="image">
    <div data-error data-error-image></div>
    <div data-error data-error-common></div>
    <input type="submit" value="ok">
</form>

id为2的重复订单表单示例(将此订单的商品添加到购物车)

<form data-evocms-user-action="order/repeat" data-evocms-user-id="2">
    <p><b>Повторение заказа номер 2 выглядит так</b></p>
    @csrf
    <div data-error data-error-common></div>
    <input type="submit" value="ok">
</form>

成功认证后重新加载页面的jQuery脚本示例

    $(document).on("evocms-user-auth-success", function(e, actionUser, actionId, element, msg){
        location.reload();
    })

处理资料编辑的jQuery脚本示例

    $(document).on("evocms-user-profile-before", function(e, actionUser, actionId, element){
        alert('сейчас отправим данные пользователя ' + actionUser + ' на редактирование и подождем, что будет');
    })
    $(document).on("evocms-user-profile-error", function(e, actionUser, actionId, element, msg){
        console.log(msg);
        alert('ошибки при редактировании профиля, загляните в консоль за подробностями');
    })
    $(document).on("evocms-user-profile-success", function(e, actionUser, actionId, element, msg){
        alert('профиль пользователя ' + actionUser + ' успешно отредактирован');
    })

将电子邮件添加到EasyNewsLetter模块的表单示例

<form data-evocms-user-action="easynewsletter">
    @csrf
    <input type="email" name="email" placeholder="Введите ваш e-mail" required>
    <div data-error data-error-email></div>
    <div data-error data-error-common></div>
</form>

EasyNewsLetter成功订阅通知脚本示例

    $(document).on("evocms-user-easynewsletter-success", function(e, actionUser, actionId, element, msg){
        element.find('[data-error-common]').html('<span class="success">Вы успешно подписались на рассылку!</span>');
    })