These are chat archives for DrupalRu/chat

9th
Jun 2017
onlyextart
@onlyextart
Jun 09 2017 06:56 UTC
Привет всем
нужна помощь по drupal 8
есть кто тут?
Tahtabaev Ildar
@Tahtabaev
Jun 09 2017 06:57 UTC
Т
Привет
Что хочешь?
onlyextart
@onlyextart
Jun 09 2017 06:57 UTC
да с формой у меня тут непонятки
в общем нужно сделать, если валидация не прошла, то вывести попап окно
сделать то сделал, но только теперь выползает окно, а валидации нет
я прописал так if ($form_state->getErrors()) {
...
}
как сделать так, чтобы прошла валидация (показало какие поля не заполнены) и потом вышло уже окно?
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:00 UTC
а где прописал то?
за 8 не скажу, но для этого дела в 7 надо было альтерить саму форму, добавляя ещё один валидэйшн коллбэк
onlyextart
@onlyextart
Jun 09 2017 07:02 UTC
ну на кнопку повесил колбэк, и в колбеке уже проверку делаю. Только вот нужно чтоб проверка шла после валидации
может я не правильно проверяю?
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:03 UTC
проверка - это и есть валидация
проверка в колбэке - это неправильно
потому и не валидируется форма
onlyextart
@onlyextart
Jun 09 2017 07:08 UTC
ну я же просто проверяю, есть ли errors и выкидываю окно
Maksim Baev
@mbaev
Jun 09 2017 07:09 UTC
@onlyextart, а почему бы тебе не задать этот вопрос на drupal.ru?
Дело в том
onlyextart
@onlyextart
Jun 09 2017 07:09 UTC
@mbaev да я там уже задавал, отправили в общий чат
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:09 UTC
@onlyextart определись, тебе нужно просто выкинуть окно или валидировать форму
Maksim Baev
@mbaev
Jun 09 2017 07:10 UTC
Что здесь то ты получишь ответ лично для себя, а там он и другим пригодиться.
Хм
onlyextart
@onlyextart
Jun 09 2017 07:10 UTC
@mbaev если я найду решение своего вопроса, обязательно скину
Maksim Baev
@mbaev
Jun 09 2017 07:11 UTC
Хорошо
onlyextart
@onlyextart
Jun 09 2017 07:11 UTC
@alexey-kuznetsov мне нужно чтобы прошла валидация, и если она с ошибками, вывести попап
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:11 UTC
@onlyextart порядок работы таков:
  1. Срабатывают коллбэки валидации. При ошибке подсвечиваются неверные поля
  2. Срабатывают коллбэки сабмита - выполняются действия, выставить ощибку на элемент формы уже нельзя
onlyextart
@onlyextart
Jun 09 2017 07:11 UTC
а еще идеальней было бы в этот попап запихнукть список ошибочных полей
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:11 UTC
@onlyextart именно поэтому тебе не нужно делать это в сабмите
onlyextart
@onlyextart
Jun 09 2017 07:14 UTC
ну так то да, я на сабмит вешаю. А как тогда сделать по другому? Посоветуй плизх направление
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:14 UTC
за 8 не скажу, но для этого дела в 7 надо было альтерить саму форму, добавляя ещё один валидэйшн коллбэк
Anton Karpov
@awd-studio
Jun 09 2017 07:20 UTC
@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 UTC
только пришпилять валидацию надо в самой форме
а что там отлавливать?
в 8 нет аякс команд?
Anton Karpov
@awd-studio
Jun 09 2017 07:22 UTC
есть
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:22 UTC
ну и всё
отловить через друпал гет мессаджес
Anton Karpov
@awd-studio
Jun 09 2017 07:22 UTC
можно попробовать запихнуть туда команды, и ими ошибки выводить, но есть вероятность что сообщения после отправки будут показаны
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:22 UTC
аякс команды покажутся сразу
наверное))
Anton Karpov
@awd-studio
Jun 09 2017 07:23 UTC
ну... как они покажутся в модалке?
хотя... хз
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:25 UTC
ты же дёргаешь пхп во время отправки формы, поэтому аякс команды что-то в любом случае выведут
Anton Karpov
@awd-studio
Jun 09 2017 07:25 UTC
@onlyextart вот еще - посмотри
ну, для вывода сообщеньки - страница должна быть загружена
а команды - просто генерят в дом элементы
вернее, смотря как настроить и какие команды ))
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:29 UTC
@awd-studio ну как-то ж валидэйшн колбэки подсвечивают элементы формы
Anton Karpov
@awd-studio
Jun 09 2017 07:29 UTC
после перезагрузки формы
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:30 UTC
но она же сама перезагружается
кароч не дури голову))
Anton Karpov
@awd-studio
Jun 09 2017 07:30 UTC
как это??
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:30 UTC
всё оно норм работает
@awd-studio процитируй хулигана на форуме и поймёшь
Anton Karpov
@awd-studio
Jun 09 2017 07:31 UTC
тут же суть в том, что если не пройдет валидацию - не ннада отправлять, а только показать модалку с сообщеньками
можно попробовать костыль запилить - сделать страницу-болванку, при сабмите - проверять форму на ошибки и если есть - ходить на ту страницу и коммандой открывать ее в модалке
тогда там будут сообщеньки
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:32 UTC
@awd-studio ты думаешь, автору принципиально, что валидация должна быть клиентсайд?
Anton Karpov
@awd-studio
Jun 09 2017 07:34 UTC
при чем здесь клиентсайд?
наоборот же - должна пройти на серве, чтоб ошибки были показаны
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:35 UTC
смотри, цитируешь ты хулигана
нажимаешь отправить
форма летит на сервер
onlyextart
@onlyextart
Jun 09 2017 07:36 UTC
так ошибки же эти показываются в темлэйте
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:36 UTC
а потом вдруг красная месага!
а форма по-прежнему заполнена
onlyextart
@onlyextart
Jun 09 2017 07:36 UTC
если есть возможность их средерить, то можно их в попап этот и засунуть
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:36 UTC
т.е. страница перерендерилась
onlyextart
@onlyextart
Jun 09 2017 07:38 UTC
в любом случае для начала было бы неплохо сделать просто, показать ошибки там где сейчас (т.е. валидация) и потом вывести попап что есть ошибки, с обычным текстом
дело в том, что форма большая, и ошибки отображаются вверху, что юзеру не совсем понятно что происходитъ
Anton Karpov
@awd-studio
Jun 09 2017 07:39 UTC
так а не должно ж быть перезагрузки
а модалка просто
onlyextart
@onlyextart
Jun 09 2017 07:43 UTC
и так, в модалку я вывел ошибки, крутяк
как тут кодом показать?
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:44 UTC
три раза ё
Anton Karpov
@awd-studio
Jun 09 2017 07:45 UTC
```php
тут код
```
Alexey Kuznetsov
@alexey-kuznetsov
Jun 09 2017 07:46 UTC
тут код
Anton Karpov
@awd-studio
Jun 09 2017 07:46 UTC
M↓ в окошке ввода - хелп
onlyextart
@onlyextart
Jun 09 2017 07:47 UTC

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