Спасибо Вам большое!
Так значит если я впишу эти поля вне foreach, ничего, можно так оставить?
26 22.07.2016 17:30:36
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
27 22.07.2016 16:31:15
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
вместо
{foreach from=$fm->getStructure() item=item}
<tr class="{cycle values=$hl name="order"}">
<td>{$item.current_val}</td>
</tr>
{/foreach}
вставить это?
<td class="otitle">1</td><td><input type="text" name="userfields_arr[]" value="{$elem.userfields_arr[0]}" class="maxWidth"></td>
<td class="otitle">2</td><td><input type="text" name="userfields_arr[]" value="{$elem.userfields_arr[1]}" class="maxWidth"></td>
28 22.07.2016 13:47:55
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Сделал так, но соответственно выводится 4 поля, их выносить вне foreach?
<td class="otitle">{$item.title}</td><td><input type="text" name="userfields_arr[]" value="{$elem.userfields_arr[0]}" class="maxWidth"></td>
<td class="otitle">{$item.title}</td><td><input type="text" name="userfields_arr[]" value="{$elem.userfields_arr[1]}" class="maxWidth"></td>
29 22.07.2016 12:59:49
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Не работает по прежнему. После обновления страницы едет верстка. ошибки не показываются
{assign var=fm value=$elem->getFieldsManager()}
{foreach from=$fm->getStructure() item=item}
<tr class="{cycle values=$hl name="order"}">
<td class="otitle">{$item.title}</td><td><input type="text" name="userfields_arr[0]" value="{$elem.userfields_arr.current_val[0]}" class="maxWidth"></td>
<pre>{var_dump($elem.userfields_arr)}</pre>
<!--<td>{$item.current_val}</td>-->
</tr>
{/foreach}
30 22.07.2016 12:01:46
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
array(1) {
["current_val"]=>
array(2) {
[0]=>
string(2) "11"
[1]=>
string(2) "12"
}
}
array(1) {
["current_val"]=>
array(2) {
[0]=>
string(2) "11"
[1]=>
string(2) "12"
}
}
31 22.07.2016 11:55:06
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
ну у меня выводит array в input
32 22.07.2016 11:11:23
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Поправите?
if (isset($_POST['userfields_arr'])){ //Если нужное поле пришло из запроса
$myarray = array(
'userfields_arr' => $_POST['userfields_arr']
);
$order['userfields'] = serialize($myarray);
foreach ( $myarray as $key => $value ) {
$userfields_arr = $order['userfields'];
}
}
33 21.07.2016 15:57:48
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Ну у Вас в POST 2 поля приходят. Соответственно, в массиве для сохранения нужно указать 2 поля.
$myarray = array( 'current_val' => $_POST['current_val'], 'name второго поля' => $_POST['name второго поля'] );
Это понятно, но name то у них одинаковый получается. Вот посмотрите на скрине
34 21.07.2016 14:31:26
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
35 21.07.2016 12:10:28
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
А чему $myarray у Вас переменная равна? И почему, если вы отправляете переменную с именем current_val у Вас проверка на $_POST['userfields']?
Сейчас подправил, но все же
public static function ormBeforeWriteShopOrder ($data) {
// @var \Shop\Model\Orm\Order
$order = $data['orm'];//Получаем объект заказа
$flag = $data['flag'];//флаг
$myarray = $order['current_val'];
if (isset($_POST['current_val'])){ //Если нужное поле пришло из запроса
$order['userfields'] = serialize($myarray);
}
}
36 21.07.2016 10:54:59
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Что то не срабатыает, не подскажите?
Ввожу данные в поле->нажимаю сохранить->идет сохранение.
Делаю var_dump($_POST['userfields']); ничего не вижу
Смотрю консоль firebag там:
-----------------------------29948320313281
Content-Disposition: form-data; name="current_val"
12
Но если обновляю страницу, записи пропадают, что не так?
public static function ormBeforeWriteShopOrder ($data) {
// @var \Shop\Model\Orm\Order
$order = $data['orm'];//Получаем объект заказа
$flag = $data['flag'];//флаг
if (isset($_POST['userfields'])){ //Если нужное поле пришло из запроса
$order['userfields'] = serialize($myarray);
}
}
37 20.07.2016 12:22:16
Re: Редактирование полей (65 ответов, оставленных в Вопросы по работе с системой)
Постучитесь в онлайн консультант
Добрый день. Не могли бы Вы еще раз написать пожалуйста какие поля использовать.
$order["orm"] = не помню что тут
38 11.07.2016 09:31:31
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Ну всё дело в том я так думаю, про то что я говорил, что нужно проверять на флажок приходящий из поста о том, что нужно генерировать пароль.
Вы можете свой код закомментировать и попробовать туже схему. Я думаю всё будет как надо. Т.е. Вам не хватает проверок на то, что именно сейчас делается с пользователем. Попробуйте завардампить объекты в Вашем коде и приходящий POST или GET запрос, чтобы проанализировать.
Думаю я с этим уже не справлюсь. Давайте тогда по другому решим этот вопрос
39 08.07.2016 17:07:03
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Заметил следующий баг. Если выйти из профиля и попытатся зайти, пишет неверный e-mail или пароль. А если не вводить пароль то авторизовывает. И это только с теми аккаунтами, которые зарегистрированы данным методом(автоматическим паролем)
40 08.07.2016 14:16:31
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Да, так работает И сразу же исчесла проблема с переадрисацией на страницу регистрации. Теперь все как надо, сразу авторизовывает.
Только почему то регистрация работает, если только заккоментирована вот эта строчка из user.inc.php
Checker' => array(array(__CLASS__, 'checkOpenPassword'), '')
Не хватает какой то проверки?
41 08.07.2016 13:49:22
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Не помогло, все равно не показывает пароль. Единственное что стало, так это два письма приходить
Можно конечно сделать так, но им тогда хеш будет зашифрованный пароль присылаться.
Какой еще есть вариант?
$user['openpass'] = $user['pass'] = $user::cryptPass(\RS\Helper\Tools::generatePassword(6));
42 08.07.2016 10:22:55
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Попробуйте в Вашем хуке beforeWrite выполнить сразу после установки openpass
/** * Действия перед записью объекта пользователя * * @param array $data - Массив с данными */ public static function ormBeforeWriteUsersUser($data){ /** * @var \User\Model\Orm\User */ $user = $data['orm']; $flag = $data['flag']; //Флаг insert или update if ($flag==$user::INSERT_FLAG){ //Делаем только на создание (insert) $my_autologin = \RS\Http\Request::commonInstance()->request('my_autologin', TYPE_INTEGER, false); //Получаем флаг из запроса if ($my_autologin){ //Если флаг стоит $user['pass'] = $user::cryptPass(\RS\Helper\Tools::generatePassword(6)); } } }
Я думаю, тогда 100% всё будет как надо.
Вот сейчас пароль записывается в БД, но на почту поле пароль приходит пустое.
Что же получается нужен хук после записи обьекта?Вот я его создал, но допустил ошибку и выдает ошибку 500 при регистрации
/**
* Действия после записи объекта
*
* @param string $flag - insert или update
*/
public static function ormAfterWriteUsersUser($data){
/**
* @var \User\Model\Orm\User
*/
$user = $data['orm'];
$flag = $data['flag']; //Флаг insert или update
if ($flag == self::INSERT_FLAG && \Setup::$INSTALLED && !$this['no_send_notice']) {
// Уведомление пользователю
$user = new \Users\Model\Notice\UserRegisterUser;
$user->init($this, $this['openpass']);
\Alerts\Model\Manager::send($user);
}
}
43 07.07.2016 16:50:43
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Вставляю следующий код в свою форму но пароль не записывается в бд. где искать ошибку
<tr>
<td class="key">Пароль:</td>
<td class="value">
<input type="checkbox" name="my_autologin" checked value="1" id="my-autologin">
<label for="my-autologin">Получить автоматически на e-mail</label>
<div class="help">Нужен для проверки статуса заказа, обращения в поддержку, входа в кабинет</div>
<div id="manual-login" style="display:none">
<div class="inline f">
<input name="openpass" value="" maxlength="70" size="18" type="password" />
<div class="help">Пароль</div>
</div>
<div class="inline">
<input name="openpass_confirm" value="" maxlength="70" size="18" type="password" />
<div class="help">Повтор пароля</div>
</div>
</div>
</td>
</tr>
44 07.07.2016 16:15:28
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Да именно так, но если смотреть в var_dump то
["pass"]=>
NULL
в базу ничего не передается, почему?
значит мне в форму регистрации нужно вставить данный код?
а что тогда использовать вместо? <input type="checkbox" name="reg_autologin" {if $order.reg_autologin}checked{/if} value="1" id="reg-autologin">
<tr>
<td class="key">Пароль:</td>
<td class="value">
<input type="checkbox" name="reg_autologin" {if $order.reg_autologin}checked{/if} value="1" id="reg-autologin">
<label for="reg-autologin">Получить автоматически на e-mail</label>
<div class="help">Нужен для проверки статуса заказа, обращения в поддержку, входа в кабинет</div>
<div id="manual-login" {if $order.reg_autologin}style="display:none"{/if}>
<div class="inline f">
{$order.__reg_openpass->formView(['form'])}
<div class="help">Пароль</div>
</div>
<div class="inline">
{$order.__reg_pass2->formView()}
<div class="help">Повтор пароля</div>
</div>
<div class="inline">
<div class="form-error">{$order->getErrorsByForm('reg_openpass', ', ')}</div>
</div>
</div>
</td>
</tr>
45 07.07.2016 14:08:10
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Ну вот значит всё работает. openpass записывается Ваш созданный пароль который генерируется.
Вам осталось проверить ещё на приходящую из запроса Вашу галочку. Что у Вас не работает?
А для чего проверять на это галочку?
А на каком же тогда этапе пароль должен записываться в поле pass?
Не понимаю что то я
46 07.07.2016 13:53:27
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
array(3) {
["orm"]=>
object(Users\Model\Orm\User)#193 (15) {
["default_group":protected]=>
string(5) "guest"
["authorized_user_group":protected]=>
string(7) "clients"
["access_menu_table":protected]=>
string(16) "vnou_access_menu"
["access_module_table":protected]=>
string(18) "vnou_access_module"
["cache_cost_id":protected]=>
NULL
["cache_mod_access":protected]=>
NULL
["cache_menu_access":protected]=>
NULL
["cache_admin_menu_access":protected]=>
NULL
["cache_allow_sites":protected]=>
NULL
["groups":protected]=>
NULL
["_values":protected]=>
array(29) {
["changepass"]=>
int(1)
["name"]=>
string(8) "вася"
["surname"]=>
string(8) "вася"
["midname"]=>
string(8) "вася"
["e_mail"]=>
string(12) "test@mail.ru"
["openpass"]=>
string(6) "RaX8Sd"
["phone"]=>
string(15) "+7 918 00011222"
["is_company"]=>
int(0)
["company"]=>
string(0) ""
["company_inn"]=>
string(0) ""
["data"]=>
array(0) {
}
["id"]=>
NULL
["login"]=>
string(12) "test@mail.ru"
["pass"]=>
NULL
["sex"]=>
NULL
["hash"]=>
string(64) "1321242dbe3d324a39ead77024347548b2d6f77f253da4390e10e2def03d61d6"
["subscribe_on"]=>
NULL
["dateofreg"]=>
string(19) "2016-07-07 13:52:54"
["balance"]=>
NULL
["balance_sign"]=>
NULL
["ban_expire"]=>
NULL
["ban_reason"]=>
NULL
["last_visit"]=>
NULL
["__groups__"]=>
NULL
["groups"]=>
NULL
["_serialized"]=>
string(6) "a:0:{}"
["captcha"]=>
NULL
["user_cost"]=>
NULL
["cost_id"]=>
NULL
}
["_self_class":protected]=>
string(20) "Users\Model\Orm\User"
["_local_id":protected]=>
int(70)
["cache_behavior_instances":"RS\Behavior\AcceptBehavior":private]=>
array(0) {
}
["instance_behaviors":"RS\Behavior\AcceptBehavior":private]=>
array(0) {
}
}
["flag"]=>
string(6) "insert"
["on_duplicate_update_keys"]=>
array(0) {
}
}
47 07.07.2016 13:44:42
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Почему эта функция не работает?
А Вы доп модуль создали? Инициализировали его?
Да конечно
Вот код, все скрытые поля указаны.
Ну вот referer же видите
да вижу, он один
48 07.07.2016 12:13:13
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Поясните подробнее, ато не совсем понятно.
Почему эта функция не работает?
public static function ormBeforeWriteUsersUser($data){
/**
* @var \User\Model\Orm\User
*/
$user = $data['orm'];
$flag = $data['flag']; //Флаг insert или update
if ($flag==$user::INSERT_FLAG){ //Делаем только на создание (insert)
$user['openpass'] = \RS\Helper\Tools::generatePassword(6);
}
}
Вот код, все скрытые поля указаны.
{if !$is_auth}
<form method="POST" action="{$router->getUrl('users-front-register')}">
<input type="hidden" value="3318673409" name="_controller_id">
<input type="hidden" value="%2F" name="referer">
<input type="hidden" value="" name="is_company">
{$this_controller->myBlockIdInput()}
<!-- <input type="hidden" name="referer" value="{$referer}"> -->
<div id=element>
<table class="authTable">
<tr>
<td class="key">Имя
<input name="name" value="" maxlength="200" size="50" type="text" />
</td>
</tr>
<tr>
<td class="key">E-mail
<input name="e_mail" value="" maxlength="200" size="50" type="text" />
</td>
</tr>
</table>
<a id=button class="formSave">Регистрация</a>
<a href="{$router->getUrl('users-front-auth', ['referer' => $referer])}" class="formSave inDialog">Войти</a>
</div>
</form>
{/if}
49 07.07.2016 10:20:48
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
И почему то перекидывает на страницу с регистрацией, наверно что то нужно добавить как было в примере с авторизацией?
А если мне нужно что бы было по умолчанию?
почему, так не будет работать?
/**
* Действия перед записью объекта пользователя
*
* @param array $data - Массив с данными
*/
public static function ormBeforeWriteUsersUser($data){
/**
* @var \User\Model\Orm\User
*/
$user = $data['orm'];
$flag = $data['flag']; //Флаг insert или update
if ($flag==$user::INSERT_FLAG){ //Делаем только на создание (insert)
$user['openpass'] = \RS\Helper\Tools::generatePassword(6);
}
}
50 06.07.2016 14:58:18
Re: Форма входа (41 ответов, оставленных в Вопросы по работе с системой)
Все получилось, спасибо. Только с одним но.
Я вставил $this['openpass'] = \RS\Helper\Tools::generatePassword(6); в файл user.inc.php
И после этого авторизация перестает рабоать. т.е. пользователь регистрируется, но его не авторизовывает.
Был бы премного благодарен, если бы подсказали как вынести это в отдельный модуль. Загоздка заключается в следующем
Правильно будет так: public static function ormBeforeWriteUsersUser($user(незнаю точно должна быть эта переменная или нет))
Или так: public static function ormBeforeWriteUsersUser(\Users\Model\Orm\User $userнезнаю точно должна быть эта переменная или нет))
И еще проблема, когда я вывел регистрацию на главную, после нее перекидывает на страницу с регистрацией site.ru/register/ подскажите как это исправить?что бы после главной сразу авторизовывало пользователя