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 { ...@@ -28,14 +28,30 @@ class FormApiTask extends FormBase {
'#type' => 'textfield', '#type' => 'textfield',
'#title' => t('Name:'), '#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 ( $form['site_address'] = array (
'#type' => 'textfield', '#type' => 'textfield',
'#title' => ('Site address:'), '#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']['#type'] = 'actions';
$form['actions']['submit'] = [ $form['actions']['submit'] = [
'#type' => 'submit', '#type' => 'submit',
...@@ -50,11 +66,7 @@ class FormApiTask extends FormBase { ...@@ -50,11 +66,7 @@ class FormApiTask extends FormBase {
], ],
]; ];
$form['email'] = [
'#title' => 'Email',
'#type' => 'email',
'#required' => TRUE,
];
return $form; return $form;
} }
...@@ -75,11 +87,12 @@ class FormApiTask extends FormBase { ...@@ -75,11 +87,12 @@ class FormApiTask extends FormBase {
$response->addCommand(new RemoveCommand($selector)); $response->addCommand(new RemoveCommand($selector));
//ВАЛИДАЦИЯ адреса сайта //ВАЛИДАЦИЯ адреса сайта
//она зависит от того, выбрал ли я нужную радиокнопку. Если выбрано "у меня нет сайта" , то валидация не нужна
if ($form_state->getValue('radio') === '1') {
$reg = '/(https?:\/\/)?(www.)?([\da-z\.-]+)\.([a-z\.]{2,6})/ui'; $reg = '/(https?:\/\/)?(www.)?([\da-z\.-]+)\.([a-z\.]{2,6})/ui';
if(preg_match($reg, $form_state->getValue('site_address'),$array_of_site_address)) 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) === 'рф'){ if (end($array_of_site_address) === 'ru' || end($array_of_site_address) === 'рф') {
$style = '<style>#edit-site-address{border:1px solid grey !important;}</style>'; $style = '<style>#edit-site-address{border:1px solid grey !important;}</style>';
$response->addCommand(new AddCssCommand($style)); $response->addCommand(new AddCssCommand($style));
// при успешной валидации убираем из результата http или https или www // при успешной валидации убираем из результата http или https или www
...@@ -87,8 +100,7 @@ class FormApiTask extends FormBase { ...@@ -87,8 +100,7 @@ class FormApiTask extends FormBase {
$result = preg_replace('/((https?:\/\/)||(www\.))/ui', '', $form_state->getValue('site_address')); $result = preg_replace('/((https?:\/\/)||(www\.))/ui', '', $form_state->getValue('site_address'));
$valid_site_address = true; $valid_site_address = true;
} } else {
else {
//ошибка домена //ошибка домена
$style = '<style>#edit-site-address{border:3px solid red}</style>'; $style = '<style>#edit-site-address{border:3px solid red}</style>';
$response->addCommand(new AddCssCommand($style)); $response->addCommand(new AddCssCommand($style));
...@@ -98,16 +110,14 @@ class FormApiTask extends FormBase { ...@@ -98,16 +110,14 @@ class FormApiTask extends FormBase {
$style = '<style>.domen-error{color: red !important;}</style>'; $style = '<style>.domen-error{color: red !important;}</style>';
$response->addCommand(new AddCssCommand($style)); $response->addCommand(new AddCssCommand($style));
} }
} } else {
else {
//ошибка ввода самого адреса //ошибка ввода самого адреса
$style = '<style>#edit-site-address{border:3px solid red}</style>'; $style = '<style>#edit-site-address{border:3px solid red}</style>';
$response->addCommand(new AddCssCommand($style)); $response->addCommand(new AddCssCommand($style));
$selector = '#edit-site-address'; $selector = '#edit-site-address';
if ($form_state->getValue('site_address') == NULL){ if ($form_state->getValue('site_address') == NULL) {
$content = '<p class = "domen-error">Необходимо ввести адрес сайта</p>'; $content = '<p class = "domen-error">Необходимо ввести адрес сайта</p>';
} } else {
else {
$content = '<p class = "domen-error">Вы ввели адрес неправильно, пример адреса "www.example.ru"</p>'; $content = '<p class = "domen-error">Вы ввели адрес неправильно, пример адреса "www.example.ru"</p>';
} }
...@@ -115,7 +125,11 @@ class FormApiTask extends FormBase { ...@@ -115,7 +125,11 @@ class FormApiTask extends FormBase {
$style = '<style>.domen-error{color: red !important;}</style>'; $style = '<style>.domen-error{color: red !important;}</style>';
$response->addCommand(new AddCssCommand($style)); $response->addCommand(new AddCssCommand($style));
} }
}
else {
$radio = true;
$result = '';
}
// ВАЛИДАЦИЯ email // ВАЛИДАЦИЯ email
if (filter_var($form_state->getValue('email'), FILTER_VALIDATE_EMAIL)) if (filter_var($form_state->getValue('email'), FILTER_VALIDATE_EMAIL))
{ {
...@@ -164,7 +178,7 @@ class FormApiTask extends FormBase { ...@@ -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'); $connection = \Drupal::service('database');
$result = $connection->insert('students') $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