webber12 / evocms-user
evocms 3.x 用户助手
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>');
})