I am new to CakePHP. When I use Model Field Validations
, then an error message appears infront of each field of the required form. I want to show it in a div at the top of the form. How can I implement this. Thanks in advance. Here is my code: Model:
<?php class User extends AppModel { public $validate = array( 'username' => array( 'required' => array( 'rule' => array('notEmpty'), 'message' => 'A username is required' ), array( 'rule' => array('minLength', 8), 'message' => 'Username must be at least 6 characters long' ) ), 'password' => array( 'required' => array( 'rule' => array('notEmpty'), 'message' => 'A password is required' ) ), 'city' => array( 'required' => array( 'rule' => array('notEmpty'), 'message' => 'A City is required' ) ), 'state' => array( 'required' => array( 'rule' => array('notEmpty'), 'message' => 'A State is required' ) ), 'role' => array( 'valid' => array( 'rule' => array('inList', array('admin', 'author')), 'message' => 'Please enter a valid role', 'allowEmpty' => false ) ) ); }
UsersController.php
public function add() { $this->set('states_options', $this->State->find('list', array('fields' =>array('id','name') ))); $this->set('cities_options', array()); if ($this->request->is('post')) { $this->User->set($this->request->data); if($this->User->validates()) { $this->User->create(); if ($this->User->save($this->request->data)) { $this->Session->setFlash(__('The user has been saved')); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('The user could not be saved. Please, try again.')); } } else { $errors = $this->User->validationErrors; $this->set('ValidateAjay',$errors);
Custom view:
<script> $(document).ready(function(){ $('#UserState').change(function(){ var stateid=$(this).val(); $.ajax({ type: "POST", url: "checkcity", data:'stateid='+stateid+'&part=checkcity', success: function(data) { $("#city_div").html(data); } }); }); }); </script> <div class="users form"> <?php if(!empty($ValidateAjay)){ pr($ValidateAjay); } echo $this->Form->create('User'); ?> <fieldset> <legend><?php echo __('Add User'); ?></legend> <?php echo $this->Form->input('username'); echo $this->Form->input('password'); echo $this->Form->input('state', array('options' => $states_options , 'empty' => 'Select State' )); ?> <div id="city_div"> <?php echo $this->Form->input('city', array('options' => $cities_options, 'empty' => 'Select City' )); ?> </div> <?php echo $this->Form->input('role', array( 'options' => array('admin' => 'Admin', 'author' => 'Author') )); ?> </fieldset> <?php echo $this->Form->end(__('Submit')); ?> </div>