Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
N
new_project
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Jobs
Commits
Open sidebar
Telenkov Ruslan
new_project
Commits
3f784168
Commit
3f784168
authored
Jun 03, 2022
by
Telenkov Ruslan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
this is form api task
parent
3511cc59
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
55 additions
and
41 deletions
+55
-41
FormApiTask.php
app/docroot/modules/custom/formApi/src/Form/FormApiTask.php
+55
-41
No files found.
app/docroot/modules/custom/formApi/src/Form/FormApiTask.php
View file @
3f784168
...
...
@@ -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'
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment