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]
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.