Bonsoir,

Alors voilà j'ai une vue avec un formulaire mais j'ai un problème car quand je poste le formulaire à vide le debug fonctionne mais si je remplis le textarea avec beaucoup de texte ou que je clique sur le bouton ajouter une étape et que je remplis les remplis un peu et que j'envoie mon formulaire la page tourne tourne puis chrome me met que la requête à échoué.

Voici mes pages:
add.ctp

<?php echo $this->Form->create('Recette', array('class' => 'form-horizontal'));?>
<div class="row">
    <div class="span12">
        <ul class="nav nav-pills" id="navTab">
            <li class="active"><a href="#tab1">Général</a></li>
            <li><a href="#tab2">Ingrédient</a></li>
            <li><a href="#tab3">Etape</a></li>
            <li><a href="#tab4">Astuce</a></li>
            <li><a href="#tab5">Vin</a></li>
            <li><a href="#tab6">Options</a></li>
        </ul>
        <div class="tab-content">
            <div class="tab-pane active" id="tab1">
                <?php
                echo $this->TB->input('name', array(
                    'input' => $this->Form->input('name', array('label' => false, 'class' => 'span8')),
                    'label' => 'Titre de la recette'
                ));
                ?>
                <?php
                echo $this->TB->input('recette_category_id', array(
                    'input' => $this->Form->input('recette_category_id', array('label' => false)),
                    'label' => 'Catégorie'
                ));
                ?>
                <?php
                echo $this->TB->input('online', array(
                    'input' => $this->Form->input('online', array('label' => false, 'options' => array(10 => 'Hors ligne', 11 => 'En ligne', 12 => 'Brouillon'), 'empty' => 'Choisissez')),
                    'label' => 'Statut'
                ));
                ?>
            </div>

            <div class="tab-pane" id="tab2">
                <?php
                echo $this->TB->input_addon(
                    'Ingredient',
                    '<button class="btn ingred" type="button">Ajouter</button>',
                    $this->Form->input('ingred', array('label' => false, 'class' => 'span5'))
                );
                ?>
                <div class="ingredList">
                    <ul class="unstyled"></ul>
                    <?php echo $this->Form->input('ingredient', array('type' => 'hidden')); ?>
                </div>
            </div>

            <div class="tab-pane" id="tab3">
                <?php
                echo $this->TB->input('etape', array(
                    'input' => $this->Form->input('etape.0', array('label' => false, 'type' => 'textarea', 'class' => 'span8 etapeInput')),
                    'label' => 'Etape'
                ));
                ?>
                <?php echo $this->TB->button('Ajouter une étape', array('type' => 'button', 'style' => 'btn', 'class' => 'etape')); ?>
                <div class="etapeList"></div>
            </div>

            <div class="tab-pane" id="tab4">
                <?php
                echo $this->TB->input('astuce', array(
                    'input' => $this->Form->input('astuce', array('label' => false, 'type' => 'textarea', 'class' => 'span8')),
                    'label' => 'Astuce'
                ));
                ?>
            </div>

            <div class="tab-pane" id="tab5">
                <?php
                echo $this->TB->input('vin', array(
                    'input' => $this->Form->input('vin', array('label' => false, 'type' => 'textarea', 'class' => 'span8')),
                    'label' => 'Vin'
                ));
                ?>
            </div>
            <div class="tab-pane" id="tab6">
                <?php
                echo $this->TB->input('quantity', array(
                    'input' => $this->Form->input('quantity', array('label' => false, 'type' => 'number', 'class' => 'span2', 'value' => '4')),
                    'label' => 'Pour combien de personne?'
                ));
                ?>
                <?php
                echo $this->TB->input('prepa', array(
                    'input' => $this->Form->input('prepa', array('label' => false, 'class' => 'span2', 'value' => '0')),
                    'label' => 'Temps de préparation en min'
                ));
                ?>
                <?php
                echo $this->TB->input('cuisson', array(
                    'input' => $this->Form->input('cuisson', array('label' => false, 'class' => 'span2', 'value' => '0')),
                    'label' => 'Temps de cuisson en min'
                ));
                ?>
                <?php
                echo $this->TB->input('count', array(
                    'input' => $this->Form->input('count', array('label' => false, 'options' => array(0 => 'Economique', 1 => 'Pas cher', 2 => 'Gros budget'), 'empty' => 'Choisissez')),
                    'label' => 'Coût de la recette'
                ));
                ?>
                <?php
                echo $this->TB->input('dificulty', array(
                    'input' => $this->Form->input('dificulty', array('label' => false, 'options' => array(0 => 'Débutant', 1 => 'Intermédiaire', 2 => 'Confirmé'), 'empty' => 'Choisissez')),
                    'label' => 'Difficulté'
                ));
                ?>
            </div>
        </div>
    </div>
</div>
<?php 
echo $this->Form->input('users_id', array('type' => 'hidden', 'value' => $user)); 
?>
    <div class="form-actions">
        <?php echo $this->TB->button('Envoyer', array('style' => 'primary')); ?>
        <?php echo $this->TB->button('Effacer', array('style' => 'danger', 'type' => 'reset')); ?>
    </div>
<?php echo $this->Form->end(); ?>

<?php $this->start('script', array('inline' => false)); ?>
    <script type="text/javascript">
        $(document).ready(function() {
            $('button.ingred').on('click', function(e) {
                e.preventDefault();
                var $this = $(this).parent();
                var $ingred = $this.find('.input input').val();
                var $inputIngred =$('input#RecetteIngredient').val();
                $('.ingredList ul').append('<li><span class="label label-info">'+$ingred+'</span> <span class="label label-important" style="cursor: pointer;">Supprimer</span></li>');
                $ingred = $inputIngred+'|'+$ingred;
                $('input#RecetteIngredient').val($ingred);
                $this.find('.input input').val('');
                $this.find('.input input').focus();
                return false;
            });
            $('body').on('click', '.ingredList ul li span.label-important', function(e) {
                e.preventDefault();
                var $this = $(this);
                var text = $this.parent().find('.label-info').text();
                console.log(text);
                var input = $('input#RecetteIngredient').val();
                console.log(input);
                var newVal = input.replace(text+'|', '');
                console.log(newVal);
                $('input#RecetteIngredient').val(newVal);
                $this.parent('li').fadeOut();
            });
            $('button.etape').on('click', function(e) {
                e.preventDefault();
                var i = $('textarea.etapeInput').length;

                var textarea = '<?php echo $this->TB->input("etape", array("input" => $this->Form->input("etape.'+i+'", array("label" => false, "type" => "textarea", "class" => "span8 etapeInput")), "label" => false)); ?>'
                $('.etapeList').append(textarea);
                return false;
            });
            $('#navTab a').on('click', function(e) {
                e.preventDefault();
                $(this).tab('show');
            })
        });
    </script>
<?php $this->end(); ?>

action add de mon controller:

public function add() {
        if($this->request->is('post')) {
            debug($this->request->data);
            die();

            $this->Recette->create();
            if($this->Recette->save($this->request->data)) {
                $this->Session->setFlash('La recette à bien été ajouté.', 'default', array(), 'success');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('Un problème est survenu, veuillez réessayer plus tard.', 'default', array(), 'error');
            }
        }
        $recetteMedias = '';//$this->Recette->RecetteMedia->find('list');
        $recetteCategories = $this->Recette->RecetteCategory->findSelect();
        $user = $this->Auth->user('id');
        $this->set(compact('recetteMedias', 'recetteCategories', 'user'));
    }

Je suis sous MAMP PRO et CakePHP 2.3.1.

Donc à votre avis ca peut venir de quoi?

Merci d'avance....

11 réponses


djtec
Auteur

Personne?

Essaye de voir du coté du timeout de ton apache, mais c'est assez étrange. Ca le fait seulement avec ce form ou bien même 2-3 inputs il rame ?

djtec
Auteur

Non que sur celui là car sur le form pour le blog ou les utilisateurs ça marche nikel mais celui là pas du tout

if($this->request->is('post')) {

c'est pas plutôt recette ?

djtec
Auteur

@coloo Pas du tour car en fesant if($this->request->is('post')) je vérifie si un formulaire à été posté

Dat fail, bon je vais me cacher

djtec
Auteur

Je n'ai toujours pas trouvé voici l'erreur que chrome me renvoit:

Page Web inaccessible
Impossible de charger la page Web sur Google Chrome, car cookery.com n'a pas répondu à temps. Il est possible que le site soit bloqué ou que vous rencontriez des problèmes avec votre connexion Internet.
Voici quelques suggestions :
Actualisez cette page Web ultérieurement.
Vérifiez votre connexion Internet. Redémarrez votre routeur, votre modem ou tout autre périphérique réseau que vous utilisez.
Ajoutez Google Chrome aux programmes autorisés dans les paramètres de votre pare-feu ou de votre antivirus. S'il est déjà autorisé, supprimez-le de la liste des programmes autorisés et ajoutez-le à nouveau.
Si vous utilisez un serveur proxy, vérifiez les paramètres associés ou assurez-vous que le serveur fonctionne auprès de votre administrateur réseau. Si vous ne pensez pas devoir utiliser de serveur proxy, réglez vos paramètres de proxy : Sélectionnez Applications > Préférences système > Réseau > Avancé > Proxys et désélectionnez les serveurs proxy sélectionnés..
Erreur 7 (net::ERR_TIMED_OUT) : Le délai imparti à l'opération est dépassé.

Mon site est en local et tourne avec des vhost.

Ce qui est bizarre c'est que cela fonctionnait avec les ancienne version de cakephp donc à mon avis cest la 2.3.1 qui est en cause.

Donc si vous avez une idée car la je sèche complètement.

djtec
Auteur

Un ptit up

djtec
Auteur

Toujours personne?

djtec
Auteur

Je suis vraiment bloqué car même sur mon formulaire de blog ça le fait.

Je comprends pas ce qui se passe j'ai enlevé le helper twitterbootstrap et j'ai $this->Form à la place de $this->TB et toujours pareil j'ai essayé en changeant le core de cake et en mettant la 2.0.5, 2.1.5, 2.2.0 et toujours pareil donc d'ou pourrait venir le problème???

djtec
Auteur

J'ai trouvé c'est du au vhost crée avec mamp pro car sans vhost et sans mamp pro tout fonctionne nikel sauf le facebook connect du coup