Bonjour ,
j'ai un problème que je n'arrive pas résoudre, je ne sais pas à quel niveau se trouve l'erreur.
Je m'explique j'ai un formulaire de recherche dans default.ctp pour qu'il s'affiche sur toute les pages, sur ma page d'accueil est un autre formulaire d'inscription, le problème c'est que quand je clique sur le bouton submit du formulaire de recherche la vérification se fait que le formulaire d'inscription aucune réponse de la part du formulaire de recherche.
voici le code du formulaire de recherche:

 <?php echo $this->Form->create(false,array('contoller'=>'welcomes','action'=>'../users/search')); ?>
<table border="0"  align="center" width="490">
    <tr valign="middle">
<td width="208"><?php echo $this->Form->input('nom_rech',array('class'=>'form-control','label'=>false,'div'=>false,'placeholder'=>array(__("NOM OU EGLISE",true)),'style'=>'width:190px;height:32px;','notEmpty'=>'notEmpty'));?></td>
<td width="95"><?php echo $this->Form->input('event_rech',array('class'=>'form-control','label'=>false,'div'=>false,'placeholder'=>array(__("PUBLICATION",true)),'style'=>'width:190px;height:32px;'));?></td>
        <td width="173">
        <?php echo $this->Form->button( __('<i class="fa fa-search" style="color:#137fc0;">go</i>',true),array('style'=>'height:70px; background:none; border:none;color:#fff; size:3em;','escape'=>false));?>

        </td>
    </tr>
</table>    <?php  $this->Form->End();?>

le code du formulaire d'inscription

<div id="inscription">
                        <h1><?php echo __('Inscription',true);?></h1>
                        <?php echo $this->Form->create('User',
               array('action'=>'index','controllers'=>'welcomes',
                     'inputDefaults' => array(
                     'label' => false,
                    'div'=>false
                     ))
              );?>
                       <div class="form-group">
            <div class="row">
            <div class="col-xs-6">
            <?php echo $this->Form->input('nom', array('placeholder'=>array(__('Nom',true)),'class'=>'form-control'));?>
            </div>        
            <div class="col-xs-6">

            <?php 
                    $options = array('1' => '1', '2' => '2',3 => '3','4'=>'4,'5'=>'5','6'=>'6','autres'=> 'Autres');

                   echo $this->Form->input('nombre', array('type' => 'select', 'options' => $options,'id'=>'nom','class'=>'form-control'));?>
            </div></div>
        </div>

         <div class="form-group">
            <div class="row">
            <div class="col-xs-6">
            <div class="btn-group" data-toggle="buttons">
        <input type="hidden" name="data[User][role]" id="UserRole_" value=""/>
        <label class="btn btn-primary active" >
         <input type="radio" name="data[User][role]" id="UserRoleEglise" value="eglise" style="padding-left:2em;"/><?php echo __('nombre',true);?>
        </label>
       </div>
            </div>        
            <div class="col-xs-6">

        <div class="form-group">
           <?php echo $this->Form->input('email',array('placeholder'=>array(__("Adresse E-mail",true)),'class'=>'form-control','type'=>'email'));?>
        </div>
        <div class="form-group">
            <?php echo $this->Form->input('password',array('placeholder'=>array(__("Mot de passe",true)),'class'=>'form-control','type'=>'password'));?>
        </div>        

      <p align="left"><?php echo $this->Form->button( __('INSCRIPTION',true),array('class'=>'btn btn-success'));
         $this->Form->End();?></p>

une bonne volonté ...., Merci

7 réponses


Bonjour.
Dans le create de ton formulaire de recherche, tu désignes le controller welcomes (sauf que tu as marqué contoller au lieu de controller et dans l'action tu mets une url.
Dans le paramètre action tu es censé définir l'action correspondante et non une url, ou alors il te faut utiliser la syntaxe Html basique et non le Helper Form de CakePHP.
Si nous devions analyser l'url, elle renverrait vers le controller users.
À mon avis, il n'y a pas besoin d'aller plus loin.

Remarque : Rien que dans la partie de ton formulaire de recherche, il y a énormément de règles CSS définies dans les balises HTML, j'espère bien que tu comptes remédier à ceci, car ça fait relativement sale.

Autre point, le "end();" sert de bouton submit.

Absolument pas, la méthode end du Helper Form, permet de fermer le formulaire, il ne génère un bouton submit, seulement dans le cas où un paramètre est désigné dans la méthode.

wenz
Auteur

pour les règles de css oui c'est à remedier après, tu propose quoi comme solution toi?
au fait quand j'ai examiné la page index sous mozilla, voici le qui s'affiche pour le formulaire recherche

<form id="/users/searchForm" accept-charset="utf-8" method="post" action="/chapel/welcomes/../users/search">

    <div style="display:none;"></div>
    <table width="490" border="0" align="center">
        <tbody>
            <tr valign="middle">
                <td width="208">
                    <input id="nom_rech" class="form-control" type="text" notempty="notEmpty" style="width:190px;height:32px;" placeholder="NOM OU EGLISE" name="data[nom_rech]"></input>
                </td>
                <td width="95"></td>
                <td width="173"></td>
            </tr>
        </tbody>
    </table>

</form>

pour le formulaire d'inscription les balise form n'existe pas , l'erreur peut venir de là?

D'après le code Html que tu montres ci-dessus, les balises form existent bien, mais comme tu peux le voir, l'url de l'action du formulaire est totalement fausse, si tu veux qu'il fonctionne correctement le formulaire, ton create doit ressembler à ça :

<?php echo $this->Form->create(false, array('controller'=>'welcomes','action'=>'search')); ?>

Dans le cas bien sûr où le formulaire doit bien renvoyer vers le controller "welcomes" et l'action "search'
Quand tu auras déjà fait ça, tu auras au moins réglé la conformité du formulaire.

wenz
Auteur

Merci, j'ai corrigé mais ça ne marche pas toujours, j'ai une question boostrap peut etre la cause? parce que normalement les erreurs qui doivent s'afficher doivent etre celles que j'ai préciser au niveau de mon model user mais tel n'est pas le cas les messages affichés sont différent de celui que j'ai préciser au niveau de mon model

celles que j'ai préciser au niveau de mon model user
Je crois bien que tu mélanges tout là.

Comment les données du formulaire pourraient-elles être reliées au modèle User, alors que le formulaire est traîté dans le controller welcomes et que les données du formulaire ne sont indicé par aucun nom de modèle ?
Je te conseille de regarder le chapitre suivant de la doc : Validation des données à partir du Controller.

wenz
Auteur

On se comprends pas peut etre que je me suis mal exprimé, le controle sur le forulaire se fait au niveau du model oubien?

Pour la validation des données d'un formulaire, on les déclare dans les modèles en effet, mais elles ne s'effectuent en général que l'orsque l'on tente de sauvegarder des enregistrements en base de données, donc, si dans ton cas tu ne fais pas d'enregistrement/sauvegarde en base de données après la soumission du formulaire, CakePHP ne peux pas deviner que tu veux faire une validation des données.
Tu as donc la possibilité pour demander une validation des données d'un formulaire dans le cas où il n'y a pas d'enregistrement de ces données en BDD, c'est celle par rapport au lien que je t'ai fournit dans ma réponse précédente.