You are probably running into the HTML5 validation that was added in 2.3:
- The FormHelper now also adds the HTML5 required attribute to your input elements based on validation rules for a field. If you have a “Cancel” button in your form which submits the form then you should add 'formnovalidate' => true to your button options to prevent the triggering of validation in HTML. You can also prevent the validation triggering for the whole form by adding 'novalidate' => true in your FormHelper::create() options. See this link for more information on changes in the FormHelper: http://book.cakephp.org/2.0/en/appendices/2-3-migration-guide.html#formhelper On Tuesday, July 15, 2014 3:49:37 AM UTC-4, Lorenzo Milesi wrote: > > Hi. > I did a massive upgrade from 2.0 series to 2.5, now I'm stuck with some > errors in a form. I have two issues: 1. for some fields, which should not > be compulsory, I get empty errors. 2. when I have errors the HTML structure > gets corrupted and the page view is broken. > I'm new to Cake, I've taken over this project and I'm starting to use it. > I'm experienced in PHP and other frameworks, tough. > > This is the UserDetail module validation: > public $validate = array( > 'user_id' => array( > 'numeric' => array( > 'rule' => array('numeric'), > ), > ), > 'sex_id' => array( > 'numeric' => array( > 'rule' => array('numeric'), > 'message' => 'Please specify your sex', > ), > ), > 'birth' => array( > 'date' => array( > 'rule' => array('date'), > 'message' => 'Please select your date of > birth', > ), > ), > /*'organization' => array( > 'notempty' => array( > 'rule' => array('notempty'), > 'message' => 'Please specify your > organization name', > ), > ),*/ > 'country_id' => array( > 'numeric' => array( > 'rule' => array('numeric'), > 'message' => 'Please select your country', > ), > ), > 'state_province' => array( > 'notempty' => array( > 'rule' => array('notempty'), > 'message' => 'Please select your > province', > ), > ), > 'city' => array( > 'notempty' => array( > 'rule' => array('notempty'), > 'message' => 'Please complete the city > field', > ), > ), > 'url' => array( > 'url' => array( > 'rule' => array('url'), > 'message' => 'Please specify a correct > URL', > 'allowEmpty' => true, > 'required' => false, > ), > ), > 'bio' => array( > 'notempty' => array( > 'rule' => array('notempty'), > 'message' => 'Please provide some > information about you', > 'allowEmpty' => true, > ), > ), > 'secret' => array( > 'notempty' => array( > 'rule' => array('notempty'), > 'message' => 'Please create a secret > question', > ), > ), > 'secret_answer' => array( > 'notempty' => array( > 'rule' => array('notempty'), > 'message' => 'Please supply an answer to > the above question', > ), > ), > 'discoverable' => array( > 'boolean' => array( > 'rule' => array('boolean'), > ), > ), > ); > > This is the user add template: > <div class="grid_24"> > <div class="clear"> </div> > > <?php echo $this->Form->create('User', array('type' => 'file', 'url' > => array('controller' => 'users', 'action' => 'add'), 'class' => > 'WfGenericForm')); ?> > > <div class="grid_6"> > > <h2><legend><?php echo __('Sign Up') . " "; /* > .$this->Html->link(__('(Knowledge Base)'), array('controller' => 'pages', > 'action' => 'view','knowledge-base'), array('style' => 'font-size:12px;', > 'target' => '_blank')); */ ?></legend></h2> > <?php > echo $this->Form->inputs(array( > 'legend' => false, > 'fieldset' => false, > 'name' => array('label' => $this->element('form_tooltip', > array('code' => 'register_name')) . __('Name')), > 'surname' => array('label' => $this->element('form_tooltip', > array('code' => 'register_surname')) . __('Surname')), > 'email' => array('label' => $this->element('form_tooltip', > array('code' => 'register_email')) . __('Email')), > 'UserDetail.organization' => array('label' => > $this->element('form_tooltip', array('code' => 'register_organization')) . > __('Organization')), > 'user_types_id' => array('label' => 'User Type', 'type' => > 'select', 'options' => $userTypes), > //'username', > 'password', > 'confirm_password' => array('type' => 'password', 'label' => > __('Confirm Password')), > 'UserDetail.url' => array('label' => __('Website URL')), > )); > ?> > > </div> > <div class="grid_2 alpha omega"> </div> > <div class="grid_6"> > > <h2><legend> </legend></h2> > <?php > echo $this->Form->inputs(array( > 'legend' => false, > 'fieldset' => false, > 'UserDetail.sex_id' => array('type' => 'select', 'options' => > $sexes, 'label' => __('Sex')), > 'UserDetail.birth' => array( > 'label' => __('Date of Birth'), > 'type' => 'date', > 'dateFormat' => 'DMY', > 'minYear' => date('Y') - 70, > 'maxYear' => date('Y') - 18, > 'before' => '', > 'between' => '', > 'after' => '', > 'separator' => '' > ), > 'UserDetail.country_id' => array('label' => __('Country'), > 'options' => $countries), > 'UserDetail.state_province' => array('label' => __('State / > Province')), > 'UserDetail.city', > 'UserDetail.bio' => array('type' => 'textarea', 'label' => > $this->element('form_tooltip', array('code' => 'register_about_yourself')) > . __('About Yourself (Bio)')), > )); > ?> > </div> > > <div class="grid_2 alpha omega"> </div> > <div class="grid_6"> > > <h2><legend> </legend></h2> > <?php > echo $this->Form->inputs(array( > 'legend' => false, > 'fieldset' => false, > 'UserDetail.secret' => array('label' => __('Secret Question > (create one)'), 'type' => 'textarea'), > 'UserDetail.secret_answer' => array('type' => 'textarea'), > 'UserDetail.key' => array('label' => 'Security Key (choose up > to 5 characters)', 'value' => substr(str_shuffle(substr(String::uuid(), 8, > 15)), 0, 10), 'maxlength' => '10'), > 'UserDetail.discoverable' => array('type' => 'select', > 'options' => array('1' => 'Yes', '0' => 'No'), 'label' => __('Do you want > to be discoverable on this site?')), > 'User.profile_image' => array('type' => 'file', 'label' => > __('Profile Image')), > 'active' => array('type' => 'hidden', 'value' => '0'), > 'date' => array('type' => 'hidden', 'value' => date('Y-m-d')), > )); > ?> > </div> > <div class="clear"></div> > <div> > <?php > $options = array( > 'type' => 'submit', > 'label' => __('Create My User Account') . " >", > 'value' => 'Register >', > 'class' => 'btn btn-large btn-hau-grey', > 'style' => > 'font-weight:bold;font-size:1.4em;float:left;clear:none;margin:50px 0 50px > 20px;' > ); > ?> > <div style="float:left;clear:none;margin:50px 0 0 180px;"> > <?php > echo $this->Form->inputs(array( > 'legend' => false, > 'fieldset' => false, > 'privacy_policy' => array('label' => __('I agree to the > %s', $this->Html->link(__('Privacy Policy'), array('controller' => 'pages', > 'action' => 'view', 'privacy-policy'), array('class' => 'label label-info > cbox', 'rel' => 'privacy'))), 'type' => 'checkbox', 'value' => '1'), > 'terms_of_service' => array('label' => __('I agree to the > %s', $this->Html->link(__('Terms of Service'), array('controller' => > 'pages', 'action' => 'view', 'terms-of-service'), array('class' => 'label > label-info cbox', 'rel' => 'terms'))), 'type' => 'checkbox', 'value' => > '1') > )); > ?> > </div> > </div> > <div style="foat:left;clear:none;"> > <?php echo $this->Form->end($options); ?> > </div> > </div> > > This is the form_tooltip.ctp file: > $this->Html->script(' > https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', > array('once' => true,'inline'=>false)); > $this->Html->script('bootstrap/bootstrap.min', array('once' => > true,'inline'=>false)); > $this->Html->css('bootstrap/css/bootstrap.min'); > $this->Html->script('form_tooltip', array('once'=>true,'inline'=>false)); > > $messages = array( > // PROJECT CREATION > 'project_title' => > __('This is the title by which people will identify your project site > wide.'), > 'project_description' => > __('This will describe your project, it is vital that the first 20 - > 30 words are the most descriptive.'), > 'project_start_date' => > __('On which date does this project start?'), > 'project_end_date' => > __('On which date does this project end?'), > // USER REGISTRATION > 'register_name' => > __("Your first name, required"), > 'register_surname' => > __("Your last name, required"), > 'register_email' => > __("Your email address, you'll use this to log in to Trust Hau"), > 'register_organization' => > __("The organization you represent, if any"), > 'register_about_yourself' => > __("A short blurb about you, this adds a personal touch to your > projects") > ); > ?> > > <span<?php echo isset($style) && $style ? ' style="' . $style . '"' : ""; > // $this->Html->image('icons/ico_tooltip-help.png') ?>> > <?php echo $this->Html->link('<span class="icon-question-sign"></span>', > '#', array('escape' => false, 'rel' => 'tooltip', 'class' => 'icon > icon-help', 'title' => $messages[$code])); ?> > </span> > > <div class="WfTooltipMsg"> > <div style="float:right;clear:none;margin:0 0 5px > 5px;padding:0;color:#000;font-weight:bold;" class="exit">X</div> > <?php echo $messages[$code]; ?> > </div> > > > > In my form if I omit "bio" or "url" the form is not considered valid. If I > var_dump validationErrors I get array keys for bio and others but with > empty message. > Why this? Any hint? > > thanks > -- > Lorenzo Milesi - [email protected] <javascript:> > > YetOpen S.r.l. - http://www.yetopen.it/ > > -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/cake-php. For more options, visit https://groups.google.com/d/optout.
