In your model use "message" inside your validation rules http://book.cakephp.org/view/125/Data-Validation by default a red message will be displayed under the invalid field.
you can access the error info from your controller using $errors = $this->ModelName->invalidFields(); http://book.cakephp.org/view/410/Validating-Data-from-the-Controller Use $this->set("errorvar","your custom error message"); to display a custom error message in your view /* view */ echo $errorvar On 6 fév, 14:27, "[email protected]" <[email protected]> wrote: > Here's what I finally did, and it is working now: > > function search() { > if (empty($this->data)) { > // just render the view > } else { > $this->Book->set($this->data); // sends $data to the model for > validation purposes. > if ($this->Book->validates()) { > $results = $this->Book->find('all', > array( > 'conditions' => array( > 'or' => array( > 'Book.isbn' => $this->data['Book']['isbn'], > 'Book.title' => $this->data['Book']['title'], > 'Book.description' => $this->data['Book'] > ['description'], > 'Book.author_name' => $this->data['Book'] > ['author_name'], > 'Book.starred' => $this->data['Book'] > ['starred'] > ) > ) > ) > ); > } else { > $this->Session->setFlash('Your search contains wrong data, > please check'); > $this->redirect(array('action' => 'search')); > } > > Now, how would it be possible for me to provide the user with the > validation feedback, such as showing in the view the messages upon > validation failure? > > On Feb 5, 3:05 pm, "[email protected]" <[email protected]> wrote: > > > Could you please provide a little more detail on how to do this? > > > Specifically, what do you mean by "just pass $this->data to be > > checked" > > > Sorry for the newbie question. > > > On Jan 25, 1:28 pm, brian <[email protected]> wrote: > > > > You'll need to validate the user's input before you call find(). If > > > you want, you can create methods in the model for that and just pass > > > $this->data to be checked. Have the method(s) check the values and > > > return true/false back to the controller. > > > > On Sun, Jan 25, 2009 at 7:31 AM, [email protected] > > > > <[email protected]> wrote: > > > > > I am learning Cake with a test project. > > > > > As far as I know, validation automatically occurs when the Model's save > > > > () method is called from within a controller. So, if I have defined > > > > validation rules in my model, those rules will be scrutinized before > > > > actually either saving or editing data. > > > > > Now, what if the purpose of the form is not to save data? > > > > > Example. What if I create a form whose function is to perform a > > > > search? > > > > > In this case, I am only using the $this->data information in > > > > conjunction with the find() method, but I am not calling the save() > > > > function. > > > > > So... my question, how could I link this search form with the > > > > validation rules initially created for the add() and edit() actions > > > > (which evidently make use of the save() function)? > > > > > Here is my sample code: > > > > > In my controller: > > > > function search() { > > > > if (empty($this->data)) { > > > > // just render the view > > > > } else { > > > > $results = $this->Book->find('all', > > > > array( > > > > 'conditions' => array( > > > > 'or' => array( > > > > 'Book.isbn' => $this->data['Book']['isbn'], > > > > 'Book.title' => $this->data['Book']['title'], > > > > 'Book.description' => $this->data['Book'] > > > > ['description'], > > > > 'Book.author_name' => $this->data['Book'] > > > > ['author_name'], > > > > 'Book.starred' => $this->data['Book']['starred'] > > > > ) > > > > ) > > > > ) > > > > ); > > > > $this->set('data', $this->data); > > > > $this->set('results', $results); > > > > } > > > > } > > > > > In my view (ctp file): > > > > > <?php echo $form->create('Book', array('action'=>'search')); ?> > > > > <fieldset> > > > > <legend> Search Books </legend> > > > > <?php > > > > echo $form->input('isbn'); > > > > echo $form->input('title'); > > > > echo $form->input('description'); > > > > echo $form->input('author_name'); > > > > echo $form->input('starred'); > > > > ?> > > > > <?php echo $form->end('Search'); ?> > > > > </fieldset> > > > > > Thank you. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
