Как удалить и /или изменить поле «имя» в регистрационной форме, чтобы я мог запросить имя и фамилию отдельно?

Я разработал плагин, который позволяет мне создать пользовательский профиль пользователя. Он работает, и я могу добавлять /удалять поля по мере необходимости.

Проблема, с которой я столкнулась, - это: Как удалить и /или изменить поле «имя» в регистрационной форме, чтобы я мог запросить имя и фамилию отдельно?

Поскольку в базе данных пользователей есть имя, я знаю, что я не могу просто оставить заявку. Итак, я думал, что лучше всего включить имя и фамилию в поле «имя» для входа в базу данных. Однако при попытке реализовать это я столкнулся с проблемами.

Чтобы удалить поле «имя» из регистрационной формы, я добавил следующее в функцию onContentPrepareForm () в моем плагине профиля:

$ form- > removeField ( 'имя');

Это успешно удаляет это поле. Однако теперь мне нужно задать имя = имя + фамилию в другом месте. Я прочитал на этих форумах, что я могу изменить данные в функции onUserBeforeSave () . К сожалению, это не вызвано до того, как я получу сообщение об ошибке проверки, в котором говорится, что регистрация не удалась, и что мне нужно ввести имя. Затем я попытался отключиться в файле registration.xml . Это не сработало (или я изменил неправильный файл).

Затем я подумал, что, возможно, я могу поместить его в функцию onContentPrepareData () . Проблема, с которой я столкнулся, заключается в том, что «имя» было удалено из формы и оно не находится в массиве $ data.

Что мне делать? Каков правильный способ исправить это?

Заранее благодарим за помощь.

2 голоса | спросил nimble 3 FebruaryEurope/MoscowbWed, 03 Feb 2016 19:59:57 +0300000000pmWed, 03 Feb 2016 19:59:57 +030016 2016, 19:59:57

1 ответ


2

Позвольте мне начать с того, что я не потворствую этому методу, в следующий раз, когда вы обновите Joomla, существует высокая вероятность того, что вы полностью отмените эти изменения.

Это, однако, рабочий метод для выполнения того, что вы пытаетесь выполнить.

Отредактируйте компоненты файлов> com_users> моделей> формы> registration.xml

Прокомментируйте поле имени

<!--<field
    name="name"
    type="text"
    description="COM_USERS_REGISTER_NAME_DESC"
    filter="string"
    label="COM_USERS_REGISTER_NAME_LABEL"
    required="true"
    size="30"
/>-->

Добавьте эти 2 поля

<field
    name="firstname"
    type="text"
    description="Users First Name"
    filter="string"
    label="First Name"
    required="true"
    size="30"
/>

<field
    name="lastname"
    type="text"
    description="Users First Name"
    filter="string"
    label="First Name"
    required="true"
    size="30"
/>

В компонентах файла> com_users> контроллеры> registration.php

Добавьте эту строку кода вокруг строки 127:

$requestData['name'] = $requestData['firstname'].' '.$requestData['lastname'];

Сразу после

$requestData = $this->input->post->get('jform', array(), 'array');

Это приведет к объединению ваших полей firstname и lastname в поле имени, которое требуется для регистрации Joomlas.

Другим способом этого можно просто установить Community Builder, настроить любые настраиваемые поля, которые вы хотите, и позволить CB обрабатывать вашу регистрацию для вас вместо com_users. Это также позволит вам запрашивать любые связанные с пользователем поля в базе данных позже, если вам нужно, запросив таблицы CB в базе данных, используя идентификатор пользователя в качестве фильтра.

ответил Terry Carter 9 FebruaryEurope/MoscowbTue, 09 Feb 2016 03:17:12 +0300000000amTue, 09 Feb 2016 03:17:12 +030016 2016, 03:17:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132