Я создаю регистрационную форму в Concrete5, но предварительно мне нужно получить атрибуты пользователя.
Я использую скрытый ввод, чтобы получить значения следующим образом:
<input type="hidden" name="akID[<?php echo UserAttributeKey::getByHandle('school')->getAttributeKeyID(); ?>][value]" value='<?php echo $_POST['full_name']; ?>'/>
Однако я могу получить это значение только в том случае, если заранее сделаю ошибку, то есть неверно подтвердил пароль, а затем повторно отправил форму.
Любые идеи о том, как получить значения без этого?
С уважением
Ваш пример немного сбивает с толку.
Сначала позвольте мне объяснить, почему это не работает так, как вы этого хотите.
Вы даете своему скрытому полю значение из $ _POST. $ _POST существует только после того, как вы действительно разместите форму. Таким образом, при первой загрузке страницы $ _POST не существует, поэтому $ _POST [‘full_name’] равно нулю.
Однако, когда вы отправляете форму и возникает ошибка, та же страница перезагружается, но на этот раз существует $ _POST, поскольку страница перезагружается после отправки формы.
Вот что смущает. Если при перезагрузке $ _POST [‘full_name’] имеет значение, это означает, что у вас уже есть поле ‘full_name’, вероятно, в качестве поля ввода текста. Почему тогда вы хотите иметь скрытое поле с точно таким же значением?
Если в этом скрытом поле вы хотите указать значение пользовательского атрибута, вам нужно сделать 2 вещи:
1 — убедитесь, что пользователь вошел в систему, иначе атрибуты недоступны
2 — получить объект информации о пользователе, чтобы получить значение атрибута следующим образом:
$u = new User();
$ui = UserInfo::getByID($u->getUserID());
2- измените значение скрытого поля следующим образом:
value="<?php echo $ui->getAttribute('attribute_handle'); ?>"
Других решений пока нет …