Commit 3f784168 authored by Telenkov Ruslan's avatar Telenkov Ruslan

this is form api task

parent 3511cc59
......@@ -28,14 +28,30 @@ class FormApiTask extends FormBase {
'#type' => 'textfield',
'#title' => t('Name:'),
);
$form['email'] = [
'#title' => 'Email',
'#type' => 'email',
];
$form['radio'] = array(
'#type' => 'radios',
'#title' => t('Наличие сайта'),
'#options' => array('1' => 'У меня есть сайт', '2' => 'У меня нет сайта'),
'#default_value' => 'У меня нет сайта',
);
$form['site_address'] = array (
'#type' => 'textfield',
'#title' => ('Site address:'),
'#states' => array(
'visible' => array(
':input[name = "radio"]' => array(
'value' => '1',
),
),
),
);
$form['system_messages'] = [
'#markup' => '<div id="form-system-messages"></div>',
'#weight' => -100,
];
$form['actions']['#type'] = 'actions';
$form['actions']['submit'] = [
'#type' => 'submit',
......@@ -50,11 +66,7 @@ class FormApiTask extends FormBase {
],
];
$form['email'] = [
'#title' => 'Email',
'#type' => 'email',
'#required' => TRUE,
];
return $form;
}
......@@ -75,47 +87,49 @@ class FormApiTask extends FormBase {
$response->addCommand(new RemoveCommand($selector));
//ВАЛИДАЦИЯ адреса сайта
$reg = '/(https?:\/\/)?(www.)?([\da-z\.-]+)\.([a-z\.]{2,6})/ui';
if(preg_match($reg, $form_state->getValue('site_address'),$array_of_site_address))
{
// Если пользователь повторно ввел все нормально в это поле, то при сабмите сбросим красную рамку
if (end($array_of_site_address) === 'ru' || end($array_of_site_address) === 'рф'){
$style = '<style>#edit-site-address{border:1px solid grey !important;}</style>';
$response->addCommand(new AddCssCommand($style));
// при успешной валидации убираем из результата http или https или www
$result = preg_replace('/((https?:\/\/)||(www\.))/ui', '', $form_state->getValue('site_address'));
$valid_site_address = true;
}
else {
//ошибка домена
//она зависит от того, выбрал ли я нужную радиокнопку. Если выбрано "у меня нет сайта" , то валидация не нужна
if ($form_state->getValue('radio') === '1') {
$reg = '/(https?:\/\/)?(www.)?([\da-z\.-]+)\.([a-z\.]{2,6})/ui';
if (preg_match($reg, $form_state->getValue('site_address'), $array_of_site_address)) {
// Если пользователь повторно ввел все нормально в это поле, то при сабмите сбросим красную рамку
if (end($array_of_site_address) === 'ru' || end($array_of_site_address) === 'рф') {
$style = '<style>#edit-site-address{border:1px solid grey !important;}</style>';
$response->addCommand(new AddCssCommand($style));
// при успешной валидации убираем из результата http или https или www
$result = preg_replace('/((https?:\/\/)||(www\.))/ui', '', $form_state->getValue('site_address'));
$valid_site_address = true;
} else {
//ошибка домена
$style = '<style>#edit-site-address{border:3px solid red}</style>';
$response->addCommand(new AddCssCommand($style));
$selector = '#edit-site-address';
$content = '<p class = "domen-error">Вы ввели неправильную доменную зону, необходимая зона: "рф" или "ru"</p>';
$response->addCommand(new AfterCommand($selector, $content));
$style = '<style>.domen-error{color: red !important;}</style>';
$response->addCommand(new AddCssCommand($style));
}
} else {
//ошибка ввода самого адреса
$style = '<style>#edit-site-address{border:3px solid red}</style>';
$response->addCommand(new AddCssCommand($style));
$selector = '#edit-site-address';
$content = '<p class = "domen-error">Вы ввели неправильную доменную зону, необходимая зона: "рф" или "ru"</p>';
if ($form_state->getValue('site_address') == NULL) {
$content = '<p class = "domen-error">Необходимо ввести адрес сайта</p>';
} else {
$content = '<p class = "domen-error">Вы ввели адрес неправильно, пример адреса "www.example.ru"</p>';
}
$response->addCommand(new AfterCommand($selector, $content));
$style = '<style>.domen-error{color: red !important;}</style>';
$response->addCommand(new AddCssCommand($style));
}
}
else {
//ошибка ввода самого адреса
$style = '<style>#edit-site-address{border:3px solid red}</style>';
$response->addCommand(new AddCssCommand($style));
$selector = '#edit-site-address';
if ($form_state->getValue('site_address') == NULL){
$content = '<p class = "domen-error">Необходимо ввести адрес сайта</p>';
}
else {
$content = '<p class = "domen-error">Вы ввели адрес неправильно, пример адреса "www.example.ru"</p>';
}
$response->addCommand(new AfterCommand($selector, $content));
$style = '<style>.domen-error{color: red !important;}</style>';
$response->addCommand(new AddCssCommand($style));
$radio = true;
$result = '';
}
// ВАЛИДАЦИЯ email
if (filter_var($form_state->getValue('email'), FILTER_VALIDATE_EMAIL))
{
......@@ -164,7 +178,7 @@ class FormApiTask extends FormBase {
//после валидации обращаюсь к БД и заполняю поля у таблицы
if ($valid_email && $valid_name && $valid_site_address){
if ($valid_email && $valid_name && ($valid_site_address || $radio)){
$connection = \Drupal::service('database');
$result = $connection->insert('students')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment