These are chat archives for DrupalRu/chat

9th
Jun 2017
onlyextart
@onlyextart
Jun 09 2017 06:56
Привет всем
нужна помощь по drupal 8
есть кто тут?
Tahtabaev Ildar
@Tahtabaev
Jun 09 2017 06:57
Т
Привет
Что хочешь?
onlyextart
@onlyextart
Jun 09 2017 06:57
да с формой у меня тут непонятки
в общем нужно сделать, если валидация не прошла, то вывести попап окно
сделать то сделал, но только теперь выползает окно, а валидации нет
я прописал так if ($form_state->getErrors()) {
...
}
как сделать так, чтобы прошла валидация (показало какие поля не заполнены) и потом вышло уже окно?
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:00
а где прописал то?
за 8 не скажу, но для этого дела в 7 надо было альтерить саму форму, добавляя ещё один валидэйшн коллбэк
onlyextart
@onlyextart
Jun 09 2017 07:02
ну на кнопку повесил колбэк, и в колбеке уже проверку делаю. Только вот нужно чтоб проверка шла после валидации
может я не правильно проверяю?
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:03
проверка - это и есть валидация
проверка в колбэке - это неправильно
потому и не валидируется форма
onlyextart
@onlyextart
Jun 09 2017 07:08
ну я же просто проверяю, есть ли errors и выкидываю окно
Maksim Baev
@mbaev
Jun 09 2017 07:09
@onlyextart, а почему бы тебе не задать этот вопрос на drupal.ru?
Дело в том
onlyextart
@onlyextart
Jun 09 2017 07:09
@mbaev да я там уже задавал, отправили в общий чат
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:09
@onlyextart определись, тебе нужно просто выкинуть окно или валидировать форму
Maksim Baev
@mbaev
Jun 09 2017 07:10
Что здесь то ты получишь ответ лично для себя, а там он и другим пригодиться.
Хм
onlyextart
@onlyextart
Jun 09 2017 07:10
@mbaev если я найду решение своего вопроса, обязательно скину
Maksim Baev
@mbaev
Jun 09 2017 07:11
Хорошо
onlyextart
@onlyextart
Jun 09 2017 07:11
@alexey-kuznetsov мне нужно чтобы прошла валидация, и если она с ошибками, вывести попап
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:11
@onlyextart порядок работы таков:
  1. Срабатывают коллбэки валидации. При ошибке подсвечиваются неверные поля
  2. Срабатывают коллбэки сабмита - выполняются действия, выставить ощибку на элемент формы уже нельзя
onlyextart
@onlyextart
Jun 09 2017 07:11
а еще идеальней было бы в этот попап запихнукть список ошибочных полей
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:11
@onlyextart именно поэтому тебе не нужно делать это в сабмите
onlyextart
@onlyextart
Jun 09 2017 07:14
ну так то да, я на сабмит вешаю. А как тогда сделать по другому? Посоветуй плизх направление
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:14
за 8 не скажу, но для этого дела в 7 надо было альтерить саму форму, добавляя ещё один валидэйшн коллбэк
Anton Karpov
@awd-studio
Jun 09 2017 07:20
@onlyextart валидация вот так:
/**
 * {@inheritdoc}
 */
public function validateForm(array &$form, FormStateInterface $form_state) {
  if (strlen($form_state->getValue('phone_number')) < 3) {
    $form_state->setErrorByName('phone_number', $this->t('The phone number is too short. Please enter a full phone number.'));
  }
}
детали тут
но суть в том, чтоб отловить и вывести сообщения, т.к. при валидации они выводятся
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:21
только пришпилять валидацию надо в самой форме
а что там отлавливать?
в 8 нет аякс команд?
Anton Karpov
@awd-studio
Jun 09 2017 07:22
есть
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:22
ну и всё
отловить через друпал гет мессаджес
Anton Karpov
@awd-studio
Jun 09 2017 07:22
можно попробовать запихнуть туда команды, и ими ошибки выводить, но есть вероятность что сообщения после отправки будут показаны
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:22
аякс команды покажутся сразу
наверное))
Anton Karpov
@awd-studio
Jun 09 2017 07:23
ну... как они покажутся в модалке?
хотя... хз
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:25
ты же дёргаешь пхп во время отправки формы, поэтому аякс команды что-то в любом случае выведут
Anton Karpov
@awd-studio
Jun 09 2017 07:25
@onlyextart вот еще - посмотри
ну, для вывода сообщеньки - страница должна быть загружена
а команды - просто генерят в дом элементы
вернее, смотря как настроить и какие команды ))
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:29
@awd-studio ну как-то ж валидэйшн колбэки подсвечивают элементы формы
Anton Karpov
@awd-studio
Jun 09 2017 07:29
после перезагрузки формы
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:30
но она же сама перезагружается
кароч не дури голову))
Anton Karpov
@awd-studio
Jun 09 2017 07:30
как это??
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:30
всё оно норм работает
@awd-studio процитируй хулигана на форуме и поймёшь
Anton Karpov
@awd-studio
Jun 09 2017 07:31
тут же суть в том, что если не пройдет валидацию - не ннада отправлять, а только показать модалку с сообщеньками
можно попробовать костыль запилить - сделать страницу-болванку, при сабмите - проверять форму на ошибки и если есть - ходить на ту страницу и коммандой открывать ее в модалке
тогда там будут сообщеньки
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:32
@awd-studio ты думаешь, автору принципиально, что валидация должна быть клиентсайд?
Anton Karpov
@awd-studio
Jun 09 2017 07:34
при чем здесь клиентсайд?
наоборот же - должна пройти на серве, чтоб ошибки были показаны
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:35
смотри, цитируешь ты хулигана
нажимаешь отправить
форма летит на сервер
onlyextart
@onlyextart
Jun 09 2017 07:36
так ошибки же эти показываются в темлэйте
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:36
а потом вдруг красная месага!
а форма по-прежнему заполнена
onlyextart
@onlyextart
Jun 09 2017 07:36
если есть возможность их средерить, то можно их в попап этот и засунуть
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:36
т.е. страница перерендерилась
onlyextart
@onlyextart
Jun 09 2017 07:38
в любом случае для начала было бы неплохо сделать просто, показать ошибки там где сейчас (т.е. валидация) и потом вывести попап что есть ошибки, с обычным текстом
дело в том, что форма большая, и ошибки отображаются вверху, что юзеру не совсем понятно что происходитъ
Anton Karpov
@awd-studio
Jun 09 2017 07:39
так а не должно ж быть перезагрузки
а модалка просто
onlyextart
@onlyextart
Jun 09 2017 07:43
и так, в модалку я вывел ошибки, крутяк
как тут кодом показать?
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:44
три раза ё
Anton Karpov
@awd-studio
Jun 09 2017 07:45
```php
тут код
```
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:46
тут код
Anton Karpov
@awd-studio
Jun 09 2017 07:46
M↓ в окошке ввода - хелп
onlyextart
@onlyextart
Jun 09 2017 07:47

```php
$response = new AjaxResponse();

    if ($form_state->getErrors()) {

        $message = [
            '#theme' => 'status_messages',
            '#message_list' => drupal_get_messages(),
            '#status_headings' => [
                'status' => t('Status message'),
                'error' => t('Error message'),
                'warning' => t('Warning message'),
            ],
        ];
        $messages = \Drupal::service('renderer')->render($message);
        $title = "Error";
        $message = "Erroooors";
        $response->addCommand(new OpenModalDialogCommand($title, $messages, ['width' => '400', 'height' => 'auto']));

    };
    return  $response;

```

Anton Karpov
@awd-studio
Jun 09 2017 07:48
это в validateForm?
или в сабмите?
onlyextart
@onlyextart
Jun 09 2017 07:48
нет, в колбеке
сабмита
Anton Karpov
@awd-studio
Jun 09 2017 07:48
ага
работает, норм?
onlyextart
@onlyextart
Jun 09 2017 07:49
да, выпадает попап, и в нем все ошибки которые не прошли валидацию
Anton Karpov
@awd-studio
Jun 09 2017 07:49
гуд
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:49
осталось перенести это в валидэйшн
Anton Karpov
@awd-studio
Jun 09 2017 07:49
если форму еще обновишь - будут и элементы светится (если в теме настроено)
onlyextart
@onlyextart
Jun 09 2017 07:50
было бы идеально теперь сделать так, чтобы при нажатии на них, закрылась модалка и перенесло к полю ошибки
Anton Karpov
@awd-studio
Jun 09 2017 07:50
это уже js'ом
onlyextart
@onlyextart
Jun 09 2017 07:51
ну а так вообще круто получилось
сейчас допилю и вообще пятница будет отличной
Anton Karpov
@awd-studio
Jun 09 2017 07:53
главное до фанатизма не доводить! а то ж лучшее - враг хорошего :copyright:
onlyextart
@onlyextart
Jun 09 2017 07:55
эт точно
спасибо всем кто принимал участие, нужно будет потом описать все чо сделал
вдруг кому понадобиться
Anton Karpov
@awd-studio
Jun 09 2017 07:56
будет здорово
onlyextart
@onlyextart
Jun 09 2017 11:49
в общем рано обрадовался, один момент не работает. Конечно можно оставить как есть, но хочется добить уже до конца. Получается вот как, ошибки то норм, в попап окне, и они ссылками, но вот так как они в попап то на самой странице id input не изменились (т.е. токен не прибавился) и получается никак не сослаться на элементы формы. Грубо говоря аякс прописал свои значения только в попап
bardachev
@bardachev
Jun 09 2017 12:36
привет всем!
А кто-то юзает бутстрап 4?
чо он, как он? Можно юзать?
Grayw0lf
@Grayw0lf
Jun 09 2017 12:39
мне показался неудобным хтмл фреймворк
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 12:40
а какие там в хтмл отличия от тройки?
bardachev
@bardachev
Jun 09 2017 12:41
я думал бутстрап это про css :) а де там html?
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 12:41
мне вот понравилось, что сетка на флексах
в бутстрапе ещё жс куча
bardachev
@bardachev
Jun 09 2017 12:41
@alexey-kuznetsov да, ещё жс. а хтмл де?
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 12:42
ну там кол-см-4)))
контейнер роу))
bardachev
@bardachev
Jun 09 2017 12:42
а. классы.
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 12:42
вот тут по-моему между 3 и 4 различия минимальны