Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
new_project
Project
Project
Details
Activity
Releases
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
Changes
1
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