Thursday, April 23, 2015

Re: Cakephp 3.x Validation Error issue

Hi John,

I am working on form builder here you can see the image

https://www.dropbox.com/s/tefh2auwqy97g10/form_builder.png?dl=0

It is working in cakephp 2.x fine. here are answers of your questions.

Have you studied the CakePHP book?
yes I read the cakephp 3.x cook book

What have you tried?
In cakephp 2.x I have written validations like following but I have no idea how to try multiple index validation in cakephp 3.x

Cakephp 2.x Form fields are 
$this->Form->input('FormElement.text.1.title', ['type'=>'text', 'label'=>false, 'class'=>'form-control']);

$this->Form->input('FormElement.text.2.title', ['type'=>'text', 'label'=>false, 'class'=>'form-control']);

Cakephp 2.x Model Validations are

public $validate = array(
   'text'=> array(
'mustNotEmpty'=>array(
'rule' => 'checkForText',
'message'=> '',
'last'=>true)
),
'textarea'=> array(
'mustNotEmpty'=>array(
'rule' => 'checkForTextarea',
'message'=> '',
'last'=>true)
)
);
function checkForText() {
if(!empty($this->data['FormElement']['text'])) {
foreach($this->data['FormElement']['text'] as $key=>$val) {
if(empty($val['title'])) {
$this->validationErrors['text'][$key]['title'] = "Please enter title";
}
}
}
return true;
}
function checkForTextarea() {
if(!empty($this->data['FormElement']['textarea'])) {
foreach($this->data['FormElement']['textarea'] as $key=>$val) {
if(empty($val['title'])) {
$this->validationErrors['textarea'][$key]['title'] = "Please enter title";
}
}
}
return true;
}

so the validation work like a charm on multi index input fields 'FormElement.text.1.title' etc. The form fields are dynamically added.
I am not getting any clue to convert this code in cakephp 3.x

What does not work?
In cakephp 3.x I have tried so far.

Cakephp 3.x Form fields are 
$this->Form->input('FormElements.text.1.title', ['type'=>'text', 'label'=>false, 'class'=>'form-control']);

$this->Form->input('FormElements.text.2.title', ['type'=>'text', 'label'=>false, 'class'=>'form-control']);

Cakephp 3.x Model Validations are

public function validationForFormElements($validator) {
$validator
->add('text', [
'mustNotEmpty'=>[
'rule'=>'checkForText',
'provider'=>'table',
'message'=>''
]
])
->add('textarea', [
'mustNotEmpty'=>[
'rule'=>'checkForTextarea',
'provider'=>'table',
'message'=>''
]
]);
return $validator;
}
function checkForText($value, $context) {
if(!empty($context['data']['text'])) {
foreach($context['data']['text'] as $key=>$val) {
if(empty($val['title'])) {
I have no idea how add validation error on particular index
}
}
}
return true;
}
function checkForTextarea($value, $context) {
if(!empty($context['data']['textarea'])) {
foreach($context['data']['textarea'] as $key=>$val) {
if(empty($val['title'])) {
I have no idea how add validation error on particular index
}
}
}
return true;
}

Do you get any error messages?
I did not get any error messages

Please let me know if anything is not clear.

On Thursday, April 23, 2015 at 10:30:23 PM UTC+5:30, John Andersen wrote:
Please provide more information and also real life examples of your form code, so that we may better be able to help.

Have you studied the CakePHP book?
What have you tried?
What does not work?
Do you get any error messages?

Please show the validation code you have tried, the code for the form and whatever else that may help us understand your problem.

Kind regards
John Aage Andersen

On Wednesday, 22 April 2015 01:30:20 UTC+3, Cake Developer wrote:
Hi,

I am facing issue on form input validations errors. my input fields are following

$this->Form->input('FormElements.text.1.title', ['type'=>'text', 'label'=>false, 'class'=>'form-control']);

$this->Form->input('FormElements.text.2.title', ['type'=>'text', 'label'=>false, 'class'=>'form-control']);

$this->Form->input('FormElements.textarea.1.description', ['type'=>'textarea', 'label'=>false, 'class'=>'form-control']);

$this->Form->input('FormElements.textarea.2.description', ['type'=>'textarea', 'label'=>false, 'class'=>'form-control']);

Please help me anyone to apply validation rules and display errors.

Thanks in advance.

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

No comments: