Good way of validate form
Clash Royale CLAN TAG#URR8PPP
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;
up vote
2
down vote
favorite
What is the good way of validating a form in Drupal 8 ?
I have a bunch of fields which are supposed to be filled by a positive numeric value (and that's all, no other input types, just positive int).
public function validateForm(array &$form, FormStateInterface $form_state)
$values = $form_state->getValues();
foreach ($values as $method => $fee)
if ($method != 'Free order')
if (!is_numeric($fee)
The issue is when using $form_state->getValues()
it also returns "submit", "form_token", "form_build", "form_id", "op" which is quite boring as those infos are not needed for performing validation.
So what I did is removing those four unwanted values with :
$values = array_splice($values, count($values) - 5, 5);
But it's really annoying, am I doing something wrong, or is just as it ? Because I think those values are really not necessary in the validation process.
8 forms
add a comment |Â
up vote
2
down vote
favorite
What is the good way of validating a form in Drupal 8 ?
I have a bunch of fields which are supposed to be filled by a positive numeric value (and that's all, no other input types, just positive int).
public function validateForm(array &$form, FormStateInterface $form_state)
$values = $form_state->getValues();
foreach ($values as $method => $fee)
if ($method != 'Free order')
if (!is_numeric($fee)
The issue is when using $form_state->getValues()
it also returns "submit", "form_token", "form_build", "form_id", "op" which is quite boring as those infos are not needed for performing validation.
So what I did is removing those four unwanted values with :
$values = array_splice($values, count($values) - 5, 5);
But it's really annoying, am I doing something wrong, or is just as it ? Because I think those values are really not necessary in the validation process.
8 forms
add a comment |Â
up vote
2
down vote
favorite
up vote
2
down vote
favorite
What is the good way of validating a form in Drupal 8 ?
I have a bunch of fields which are supposed to be filled by a positive numeric value (and that's all, no other input types, just positive int).
public function validateForm(array &$form, FormStateInterface $form_state)
$values = $form_state->getValues();
foreach ($values as $method => $fee)
if ($method != 'Free order')
if (!is_numeric($fee)
The issue is when using $form_state->getValues()
it also returns "submit", "form_token", "form_build", "form_id", "op" which is quite boring as those infos are not needed for performing validation.
So what I did is removing those four unwanted values with :
$values = array_splice($values, count($values) - 5, 5);
But it's really annoying, am I doing something wrong, or is just as it ? Because I think those values are really not necessary in the validation process.
8 forms
What is the good way of validating a form in Drupal 8 ?
I have a bunch of fields which are supposed to be filled by a positive numeric value (and that's all, no other input types, just positive int).
public function validateForm(array &$form, FormStateInterface $form_state)
$values = $form_state->getValues();
foreach ($values as $method => $fee)
if ($method != 'Free order')
if (!is_numeric($fee)
The issue is when using $form_state->getValues()
it also returns "submit", "form_token", "form_build", "form_id", "op" which is quite boring as those infos are not needed for performing validation.
So what I did is removing those four unwanted values with :
$values = array_splice($values, count($values) - 5, 5);
But it's really annoying, am I doing something wrong, or is just as it ? Because I think those values are really not necessary in the validation process.
8 forms
8 forms
asked 2 hours ago
Aporie
10712
10712
add a comment |Â
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
3
down vote
accepted
The FormState
class has a method for that: FormState::cleanValues()
. From its description, it's the method you should use.
This function can be used when a module wants to store all submitted form values, for example, by serializing them into a single database column. In such cases, all internal Form API values and all form button elements should not be contained, and this function allows their removal before the module proceeds to storage. Next to button elements, the following internal values are removed by default.
- form_id
- form_token
- form_build_id
- op
You simply call it before getting the submitted values.
public function validateForm(array &$form, FormStateInterface $form_state) {
$form_state->cleanValues();
$values = $form_state->getValues();
foreach ($values as $method => $fee)
if ($method != 'Free order')
If you need to add more keys to remove from the submitted values, you could use FormState::setCleanValueKeys()
, but keep in mind that:
- The array passed to the method needs to contain also the default array keys Drupal would remove
- The method alters the array keys that are removed from
FormState::cleanValues()
for every Drupal form
1
Thanks @kiamlaluno, exactly what I was looking for !
â Aporie
2 hours ago
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
The FormState
class has a method for that: FormState::cleanValues()
. From its description, it's the method you should use.
This function can be used when a module wants to store all submitted form values, for example, by serializing them into a single database column. In such cases, all internal Form API values and all form button elements should not be contained, and this function allows their removal before the module proceeds to storage. Next to button elements, the following internal values are removed by default.
- form_id
- form_token
- form_build_id
- op
You simply call it before getting the submitted values.
public function validateForm(array &$form, FormStateInterface $form_state) {
$form_state->cleanValues();
$values = $form_state->getValues();
foreach ($values as $method => $fee)
if ($method != 'Free order')
If you need to add more keys to remove from the submitted values, you could use FormState::setCleanValueKeys()
, but keep in mind that:
- The array passed to the method needs to contain also the default array keys Drupal would remove
- The method alters the array keys that are removed from
FormState::cleanValues()
for every Drupal form
1
Thanks @kiamlaluno, exactly what I was looking for !
â Aporie
2 hours ago
add a comment |Â
up vote
3
down vote
accepted
The FormState
class has a method for that: FormState::cleanValues()
. From its description, it's the method you should use.
This function can be used when a module wants to store all submitted form values, for example, by serializing them into a single database column. In such cases, all internal Form API values and all form button elements should not be contained, and this function allows their removal before the module proceeds to storage. Next to button elements, the following internal values are removed by default.
- form_id
- form_token
- form_build_id
- op
You simply call it before getting the submitted values.
public function validateForm(array &$form, FormStateInterface $form_state) {
$form_state->cleanValues();
$values = $form_state->getValues();
foreach ($values as $method => $fee)
if ($method != 'Free order')
If you need to add more keys to remove from the submitted values, you could use FormState::setCleanValueKeys()
, but keep in mind that:
- The array passed to the method needs to contain also the default array keys Drupal would remove
- The method alters the array keys that are removed from
FormState::cleanValues()
for every Drupal form
1
Thanks @kiamlaluno, exactly what I was looking for !
â Aporie
2 hours ago
add a comment |Â
up vote
3
down vote
accepted
up vote
3
down vote
accepted
The FormState
class has a method for that: FormState::cleanValues()
. From its description, it's the method you should use.
This function can be used when a module wants to store all submitted form values, for example, by serializing them into a single database column. In such cases, all internal Form API values and all form button elements should not be contained, and this function allows their removal before the module proceeds to storage. Next to button elements, the following internal values are removed by default.
- form_id
- form_token
- form_build_id
- op
You simply call it before getting the submitted values.
public function validateForm(array &$form, FormStateInterface $form_state) {
$form_state->cleanValues();
$values = $form_state->getValues();
foreach ($values as $method => $fee)
if ($method != 'Free order')
If you need to add more keys to remove from the submitted values, you could use FormState::setCleanValueKeys()
, but keep in mind that:
- The array passed to the method needs to contain also the default array keys Drupal would remove
- The method alters the array keys that are removed from
FormState::cleanValues()
for every Drupal form
The FormState
class has a method for that: FormState::cleanValues()
. From its description, it's the method you should use.
This function can be used when a module wants to store all submitted form values, for example, by serializing them into a single database column. In such cases, all internal Form API values and all form button elements should not be contained, and this function allows their removal before the module proceeds to storage. Next to button elements, the following internal values are removed by default.
- form_id
- form_token
- form_build_id
- op
You simply call it before getting the submitted values.
public function validateForm(array &$form, FormStateInterface $form_state) {
$form_state->cleanValues();
$values = $form_state->getValues();
foreach ($values as $method => $fee)
if ($method != 'Free order')
If you need to add more keys to remove from the submitted values, you could use FormState::setCleanValueKeys()
, but keep in mind that:
- The array passed to the method needs to contain also the default array keys Drupal would remove
- The method alters the array keys that are removed from
FormState::cleanValues()
for every Drupal form
edited 2 hours ago
answered 2 hours ago
kiamlalunoâ¦
78.9k9125244
78.9k9125244
1
Thanks @kiamlaluno, exactly what I was looking for !
â Aporie
2 hours ago
add a comment |Â
1
Thanks @kiamlaluno, exactly what I was looking for !
â Aporie
2 hours ago
1
1
Thanks @kiamlaluno, exactly what I was looking for !
â Aporie
2 hours ago
Thanks @kiamlaluno, exactly what I was looking for !
â Aporie
2 hours ago
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f270957%2fgood-way-of-validate-form%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password