0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 262 Просмотров
*

sesil

  • Захожу иногда
  • 74
  • 0 / 0
  • Учусь!
Здравствуйте, в редактировании профиля, есть дополнительные поля, в них через админку можно добавить классы, как добавить классы к уже имеющимся input формам таким как name, email, password? сразу говорю, CSS решения не предлагать, нужно добавить класс к полю.
« Последнее редактирование: 21.08.2019, 12:47:51 от sesil »
*

sivers

  • Давно я тут
  • 844
  • 97 / 0
Вариант 1:
дописать классы в XML соответствующей формы тут /components/com_users/models/forms/

Вариант 2:
плагин, событие подготовки формы

Вариант 3:
В макете редактирования профиля edit.php
На связи в телеге @sivers
*

sesil

  • Захожу иногда
  • 74
  • 0 / 0
  • Учусь!
Вариант 1:
дописать классы в XML соответствующей формы тут /components/com_users/models/forms/

Вариант 2:
плагин, событие подготовки формы

Вариант 3:
В макете редактирования профиля edit.php

В 1 вариант если добавить класс через XML в файле profile все ровно class не появляется в input jform_username. 2 способом не понятно что именно нужно сделать? можно пример? И третим способом тоже не получилось сделать.
*

sivers

  • Давно я тут
  • 844
  • 97 / 0
В 1 вариант если добавить класс через XML в файле profile все ровно class не появляется в input jform_username. 2 способом не понятно что именно нужно сделать? можно пример? И третим способом тоже не получилось сделать.

1. Попробуйте другие XML из той директории и убедитесь, что макет вывода формы не переопределен (иначе сразу в п.3). Проверил - способ рабочий.
2. Делаете плагин группы Content, в нем добавляете обработчик вот такого вида:
Код
    public function onContentPrepareForm($form, $data) {
        if (!($form instanceof JForm)) {
            $this->_subject->setError('JERROR_NOT_A_FORM');
            return false;
        }

        // Получаем название формы (текущего компонента)
        $name = $form->getName();
       
        switch($name){
            case 'com_users.login':
                $form->setFieldAttribute('username', 'class', 'myClassLogin');
            break;
            case 'com_users.profile':
                $form->setFieldAttribute('password', 'class', 'myClassPass');
            break;
        }

        return true;
    }
Здесь добавляется (замещается) класс для поля логина в форме логина и класс поля ввода пароля в форме профиля. Пример рабочий - проверил.
3. Третим способом проще. Сперва надо точно вычислить макет, который подключается. Потом скопировать его в свой шаблон и внести изменения там.

Если у вас нет эффекта после изменений, то скорее всего в вашем шаблоне уже переопределен этот макет. Поищите здесь: /templates/название_вашего_шаблона/html/com_users/profile
На связи в телеге @sivers
*

sesil

  • Захожу иногда
  • 74
  • 0 / 0
  • Учусь!
public function onContentPrepareForm($form, $data) {
        if (!($form instanceof JForm)) {
            $this->_subject->setError('JERROR_NOT_A_FORM');
            return false;
        }

        // Получаем название формы (текущего компонента)
        $name = $form->getName();
       
        switch($name){
            case 'com_users.login':
                $form->setFieldAttribute('username', 'class', 'myClassLogin');
            break;
            case 'com_users.profile':
                $form->setFieldAttribute('password', 'class', 'myClassPass');
            break;
        }

        return true;
    }

Сделал все как Вы сказали, распечатал $form

Код
 object(SimpleXMLElement)#578 (1) {
            ["@attributes"]=>
            array(8) {
              ["name"]=>
              string(8) "username"
              ["type"]=>
              string(4) "text"
              ["label"]=>
              string(32) "COM_USERS_PROFILE_USERNAME_LABEL"
              ["description"]=>
              string(26) "COM_USERS_DESIRED_USERNAME"
              ["filter"]=>
              string(8) "username"
              ["required"]=>
              string(4) "true"
              ["class"]=>
              string(18) " base-form__input "
              ["size"]=>
              string(2) "30"
            }
          }

По идее должен присваиваться class но он пустой.

Вот так выглядит HTML

Код
<input type="text" name="jform[username]" id="jform_username" value="Моё имя!" size="30" readonly="readonly">
*

sivers

  • Давно я тут
  • 844
  • 97 / 0
По идее должен присваиваться class но он пустой.
В моем коде поменяйте имя поля с password на username. Ведь там пример был. Или посмотртите появился ли класс в поле ввода пароля.

В дампе формы должно быть его видно. Если в дампе есть, а в самой форме (на фронте) класса нет, значит переопределен макет у вас.
На связи в телеге @sivers
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как в БД массово добавить метки для материалов?

Автор dron

Ответов: 1
Просмотров: 168
Последний ответ 13.11.2019, 13:07:44
от beliyadm
Добавить тему из другого сайта

Автор jeshblesh

Ответов: 2
Просмотров: 113
Последний ответ 12.11.2019, 09:29:43
от wishlight
К пункту меню на внешний URL к ссылке добавить код вызова скрипта

Автор Bozhkov2

Ответов: 12
Просмотров: 620
Последний ответ 30.10.2019, 11:23:55
от Bozhkov2
Изменить id пунктов меню

Автор dron

Ответов: 6
Просмотров: 239
Последний ответ 03.10.2019, 17:00:34
от dron
Хочу добавить еще одну форму обратной связи на сайт

Автор A_nsy

Ответов: 16
Просмотров: 372
Последний ответ 04.09.2019, 16:18:54
от A_nsy