2010-07-22 6 views
0

J'essaye d'ajouter une mise en page pour une application cakephp mais maintenant mon message de validation n'est plus affiché. Lors de la validation d'un commentaire sur une entrée de blog, le message de validation supposé être en haut ne s'affiche pas.Message de validation manquant dans l'application cakephp

+3

code pls? de cette façon, nous pouvons savoir ce qui ne va pas –

+0

Comme jun l'a dit, vous devriez poster le code pertinent. En particulier, le tableau de validation (ou l'endroit où vous définissez le message d'erreur) et la partie du modèle (ctp) qui devrait afficher le message pour les débutants. – webbiedave

Répondre

0

Si vous changer la mise en page signifie que vous avez manqué d'ajouter

<?php 
if ($this->Session->check('Message.flash')){ 
    echo $this->Session->flash(); 
} 
?> 

avant la

Autres est possible dans le contrôleur courant.

Rechercher si vous avez du code comme:

$this->Session->setFlash('...'); 

Le premier code est responsable de l'affichage du message, tandis que le second est chargé d'établir le message.

Mais le code sera certainement aider plus :)

0

Voici ma fonction add dans comments_controller.php

function add(){ 
    debug($this->data); 
    //if the user submitted a comment post 
    if (!empty($this->data)){ 

     //display the 'add view'  
     $this->Comment->create(); 

     if ($this->MathCaptcha->validates($this->data['Comment']['security_code'])) { 

       if ($this->Comment->save($this->data)){ 
        $this->Session->setFlash(__('The Comment has been added.', true)); 
        $this->redirect('/posts/index/'.$this->data['Comment']['post_id']); 
       } 
       //failed validation 
       else{ 
        debug($this->data); 
        $this->Session->setFlash(__('Comment could not be saved. Please try again.', true)); 

       } 

     } 
     else { 
      $this->Session->setFlash(__('Please enter the correct answer to the math question.', true)); 
      $this->redirect('/posts/index/'.$this->data['Comment']['post_id']); 

     } 

Voici mon entry.ctp où mes messages et commentaires résident:

<div id="article"> 


<h2><?php echo $entry[0]['Post']['title']; ?></h2> 
<p class="date"><em>Modified:</em> <?php $date = new DateTime($entry[0]['Post']['modified']); 
    echo $date->format('Y-m-d');?></p> 
<p class="date"><em>Author:</em> <?php echo $entry[0]['User']['username']; ?></p> 


<p class="intro"><?php echo $entry[0]['Post']['content']; ?></p> 

<h2>Comments:</h2> 
<div id="comments_success"></div> 

<!-- show the comment --> 


<?php 

     echo $form->create('Comment', array('action' => 'add')); 

     echo $form->input('name', array('class' => 'validate[required] text-input')); 
     echo $form->input('email', array('class' => 'validate[required,custom[email]] text-input')); 

     echo $form->input('text', array('id' => 'commenttext', 'type' => 'textarea', 'label' => 'Comment:', 'rows' => '10', 'class' => 'validate[required] text-input')); 

     //captcha 
     echo $form->input('security_code', array('label' => 'Please Enter the Sum of ' . $mathCaptcha)); 
     echo $form->input('Comment.post_id', array('value' => $entry[0]['Post']['id'] , 'type' => 'hidden')); 

     echo $form->end('Submit'); 

    ?> 

<!-- comments --> 

<ol> 

<?php 
    foreach ($entry[0]['Comment'] as $comment) :     
?> 
    <li> 
     <h3><?php echo $comment['name']; ?></h3>  
     <p class="date"><em>Date:</em> <?php echo $comment['created']; ?></p> 
     <p class="text"> <?php echo $comment['text']; ?></p>  
    </li>  
<?php 
    endforeach; 
?>    
</ol> 
</div> 

Ceci est la fonction d'index dans mes posts_controller

function index($entry_id = null) { 

    if (isset($entry_id)){ 
     $entry = $this->Post->findAllById($entry_id); 

     $comments = $this->Post->Comment->getCommentsFromPostID($entry_id); 

     $this->set('entry' , $entry); 
     $this->set('mathCaptcha', $this->MathCaptcha->generateEquation()); 
     $this->render('entry'); 

    } 
    else{ 

     $posts = $this->Post->find('all'); 

     $this->set(compact('posts')); 
    } 
} 
0

Je sais c'est vieux, mais Üst assurez-vous que le code ci-dessous un endroit visible dans votre app/views/layouts/default.ctp (ou quel que soit votre disposition pour cette application)

<?php echo $this->Session->flash(); ?> 

Il ne fera écho à rien s'il n'y a pas de message à afficher, mais s'il y a un message, il sera sorti en conséquence.