Bonjour, bonsoir!

Voilà ça fais une bonne semaine que je m'arrche bien les cheveux avec un formulaire dans un élément, en faite j'ai un formulaire dans un élément le formulaire marche et enregistre bien dans la bdd mais les actions du controller ne marche pas toutes..

Alors pour facilité, voici mon controller:

function crea($id = null){
        if($this->request->is('put') || $this->request->is('post')){
            if($this->Post->save($this->request->data)){
                $this->Session->setFlash('Le contenu a bien été enregistré','notif',array('type'=>'success'));
                $this->redirect($this->referer());
            }
        }elseif($id){
            $this->Post->id = $id;
            $this->request->data = $this->Post->read();
        }else{
            $this->request->data = $this->Post->getDraft('post');
        }
        $this->loadModel('Departement');
        $d'departements'] = $this->Departement->find('list');
        $this->set($d);
    }

Et voici mon élément :

<?= $this->Form->create('Post',array(
    'class' =>'form-horizontal',
    'controller' => 'posts', 'action' => 'crea'
    )); ?>
<!--Titre-->
    <?= $this->Form->input('name',array(
            'error' => array(
                'attributes' => array(
                    'wrap' => 'span',
                    'class' => 'help-inline')),
        'label' =>array(
                'class' =>'control-label',
                'text' =>'Titre :'),
        'div' =>'control-group',
        'between' =>'<div class="controls">',
        'after' =>'</div>'
        )); ?>
<!--ID-->
    <?= $this->Form->input('id'); ?>
<!--User_ID
    <?= $this->Form->input('user_id',array('value'=>''.$this->Session->read('Auth.User.id').'','type'=>'hidden')); ?>
<!--Type -->
    <?= $this->Form->input('type',array('value' =>'post','type' =>'hidden')); ?>
<!--region-->
<?= $this->Form->input('region_id',array('value' =>''.$this->request'id'].'','type' =>'hidden' )); ?>
<!--departement-->
    <?= $this->Form->input('departement_id',array(
            'error' => array(
                'attributes' => array(
                    'wrap' => 'span',
                    'class' => 'help-inline')),
        'label' =>array(
                'class' =>'control-label',
                'text' =>'Département :'),
        'div' =>'control-group',
        'between' =>'<div class="controls">',
        'after' =>'</div>'
        )); ?>
<!--ville-->
    <?= $this->Form->input('ville',array(
            'error' => array(
                'attributes' => array(
                    'wrap' => 'span',
                    'class' => 'help-inline')),
        'label' =>array(
                'class' =>'control-label',
                'text' =>'Ville :'),
                'placeholder'=> 'Le nom de votre ville',
        'div' =>'control-group',
        'between' =>'<div class="controls">',
        'after' =>'</div>'
        )); ?>

<!--Contenu-->
    <?= $this->Form->input('content',array(
        'label' =>array(
                'class' => 'control-label',
                'text' => 'Contenu :'),
        'div' =>'control-group',
        'between' =>'<div class="controls">',
        'after' =>'</div>'
        )); ?>

<?= $this->Form->end(array(
    'label' => 'Terminer',
    'class' =>'btnform',
    'div' => array(
        'class' =>'control-group finform'),
    'before' =>'<div class="controls">',
    'after' =>'</div>')); ?>

Alors voici mon problème, j'ai une liste choix de départements, mais elle ne s'affiche pas alors que dans mon action je demande bien la requete Departement, ensuite le getDraft pour crée un brouillon ne marche pas non plus, par contre une fois le contenu enregistre la phrase d'alerte comme quoi le contenu à bien été crée marche!

Je précise que ce formulaire marche très bien dans un vue "normale" mais pas dans un élément.

Si quelqu'un avais une solution? :)
Merci
Grimp

7 réponses


Grimp
Auteur
Réponse acceptée

Ok j'ai trouver, en faite les informations devais se trouver dans le controller de la page ou se trouve l'element, et pas le controller qu'appele le formulaire!

Bonjour, si tu as mis le formulaire dans un élément c'est parce qu'il va être présent sur plusieurs pages??

Grimp
Auteur

Oui il es présent sur plusieurs pages, et je trouvais plus propre de faire un élément pour!

ça fait longtemps que j'ai pas utilisé cakePhp , une première piste regarde si tu récupère bien la variable département dans l'élement (avec un debug).
Ensuite rajoute dans l'input département:
'type' => 'select'

Si cela marche bien dans une vue normale et pas dans un élement,c'est que soit il y a des variables perdues à l'inclusion de l'élement, soit des parties automatisées par cakePhp ne le sont plus,faudra peut-être lui forcer la main quand il voit pas quoi faire

J'imagine que les grands habitués du framework t'en diront plus

bien cordialement

antho

Grimp
Auteur

Dans mes variable du debug cakephp, il ne récupère pas les départements! De plus il ne récupère pas l'id du brouillon pour afficher tinymce.
Je pense qu'il y à plutôt un problème coté controller et element!
Grimp

Apperement on peut passer des variables à l'élement

<?php
echo $this->element('nom', array(
'param_1' => ...,
'param_2 => .. ,
));
?>

file lui ce dont tu as besoin et voit ce que ça donne,

je suis pas à l'aise avec tout ça je suis pas sur du résultat, j'ai juste parcouru la doc là..