Bonjour,

Je cherche à afficher le résultat d'une validation de formulaire dans une page pop up.

Voici l'ouverture de mon form :

 <?php echo $this->form->create('Estimation',array(
       						'url' => array('controller'=>'estimations','action'=>'calcul_devis'),'_blank',
					         'id' =>'estimation_1'
   								   ));?>


A la validation je suis donc bien redirigé vers l'action calcul_devis du controller estimations.

Mais je souhaiterais que cette vue apparaisse dans une pop up.

J'ai essayé dans çà, à la fermeture de mon form, cela me renvoie bien sur une pop up mais tout le système de calcul n'est pas pris en charge.

   <?php echo $this->form->end(array(
                        'label' => 'Calcul',
                        'type' => 'submit',
		        'onclick'=> "window.open('".$this>Html>url(array('controller'=>'estimations','action'=>'calcul_devis'))."', '_blank', 'toolbar=0,scrollbars=0,location=0,status=1,menubar=1,resizable=1,width=500,height=700');return false;",
                        'name' => 'valider',
                        'class' => 'boutonDevis',
                        '#' => 'haut_de_page',
                        'div' => array(
                            'class' => 'content_button_devis',
                        )
                    ));?>


A vot' bon coeur M'sieur Dame... Smiley langue
Modérateur
Salut Urlien,

Hier soir, je rentrais de congé et j'ai lu ton sujet. Je t'avoue qu'hier soir j'avais pas envie de lire ou d'écrire une ligne de code.

Peux tu mettre sur le forum :
- ton model
- ton controller
- ta/tes vue/s

Parce que tu ne mets pas l'essentiel :

aide Alsacreations a écrit :

La règle est simple : il faut toujours donner un maximum de détails pour être sûr d'avoir une chance que les autres comprennent et aident.


Je vais essayer de te donner un coup de main. Ça va pas être facile car je commence sur les chapeaux de roues (je rentre de congé et je suis sous l'eau).

Au passage, par soucis d'ergonomie et autres, mieux vaut éviter _blank. Donc ma question est : pourquoi veux tu afficher tes msg erreurs dans une fenêtre isolée ? As tu réellement ce besoin / cette contrainte ?
Modifié par niuxe (12 Nov 2014 - 14:11)
Merci de ta réponse,j'ai un peu avancé dessus, et modifier quelques truc, je fais le point et reviens vers toi une fois que tu aura repris ton rythme de croisière.
++
Modifié par urlien (12 Nov 2014 - 15:53)
Modérateur
Montre moi :
$validate,
les actions de EstimationsController
et ta / tes vues complètes.

je verrai ça d'ici ce WE, je pense.
Salut, en fait c'est pas une validation de formulaire que je souhaite, j'ai du mal m'exprimer. En fait j'ai une page ou je peux faire des estimations. Lorsque je valide mon formulaire, j'affiche un élément avec
echo $this->element('estimation/calculDevisFilm',array("target" =>"_blank"));


Dans un premier temps je voulais afficher cet élément (le résultat de mon devis) dans un popup. J'ai essayé plusieurs solutions, mais la plupart pétouilleés sur les navigateurs vieillissant. Du coup je et en te lisant je me suis dis, je vais créer un ancre et au moment ou je valide mon formulaire, je cale ma page sur la partie résultat...Mais là le problème se situ dans le fait que j'ai déjà une ancre dans ce formulaire qui renvoie autre part...Bref, le code de ma page index

<?php $this->set('title_for_layout','Estimation');?>
<div class="wrapper">
    
<h1 title="titre_section">1 - Quels types d'originaux :</h1>

<?php echo $this->form->create('Estimation',array(
       										'url' => array('#' => 'menu'),
										'id' =>'estimation_1'
   								                ));?>

<?php echo $this->Form->input(null, array(
        							  'name' => 'estimationChoice',
							         'onchange'=>'this.form.submit()',
        							'div' => array(
            							'class' => 'original_choice'
								),
                      'options' => array( 'devistransfert-s8' =>'Transfert de films Super8 / 8mm',
							'devistransfert-16'=>'Transfert de films 16 mm / 9.5mm',
							'devisCassette'=>'Copie de cassettes',
							'devisDia'=>'Images fixe',
							'devis-K7'=>'Cassette Audio',
							'devis-vynile'=>'Vynile',
							'devis-bandeAudio'=>'Bande Audio',
							'devisSupportNum'=>'Support numérique',
							'autrePresta'=>'Autres prestations'),
							'default'=>$this->form->data?$this->form->data:'devistransfert-s8',
    ));?>
    
    <section class="content_devis">
        <div id="divSuper8">
            <section>
                <h1 title="titre_section">2 - Estimation de films  <?php echo $tablePrices[$estimationChoice]['title'];?></h1>

                    <section>
                        <div class="deco_devis">
                            <img src="app/webroot/img/estimation/<?php echo $tablePrices[$estimationChoice]['image'];?>.png">
                            <p> <?php echo $tablePrices[$estimationChoice]['description'];?>.</p>
                        </div>
                    </section>

                    <?php echo $this->form->create('Estimation', array(
																'action' => 'index',
																'url' => array('#' => 'result_estim'),
																'id' =>'estimation_2'
															)); ?>

                    <section class="tableDevis">
                        <div>
                            <?php if ($tablePrices[$estimationChoice]['tableau']):?>
                                <table class="tableEstimation">
                                    <?php foreach ($tablePrices[$estimationChoice]['tableau'] as $row): ?>
                                        <tr>
                                            <?php foreach ($row as $key => $column):
                                                $colspan = '';
                                                if (count($row) == 1)
                                                {
                                                    $colspan = 'colspan="3"';
                                                }
                                                else if (count($row) == 2 && $key == 0)
                                                {
                                                    $colspan = 'colspan="2"';
                                                }
                                                ?>
                                                <td <?php echo $colspan; ?> style="border: 1px solid #e2e2e2;"><?php echo $column; ?></td>
                                            <?php endforeach; ?>
                                        </tr>
                                    <?php endforeach; ?>
                                </table>
                            <?php endif;?>
                        </div>
                    </section>

                    <?php echo $this->form->end(array(
                        'label' => 'Calcul',
                        'type' => 'submit',
                        'onclick'=>'return calculDevis()',
                        'name' => 'valider',
                        'class' => 'boutonDevis',
                        '#' => 'result_estim',
                        'div' => array(
                            'class' => 'content_button_devis',
                        )
                    ));?>
                    

            </section>
        </div>
    </section>
   
    <section class="result_estim" id="result_estim">
        <?php if(isset($_POST['valider'])){
        	echo $this->element('estimation/calculDevisFilm',array("target" =>"_blank"));
        }
        ?>
    </section>
</div> <!--div wrapper-->

	


Le code s'affiche en vrac... Smiley confus
Mon ancre est donc result-estim, mais enfait celle qui est privilégié est "menu" à la création du formulaire.

Voilou voilou...

3H03 c'est tard pour un message, retour ,de vacances sur les chapeaux de roues donc...

Merci à toi...
Modérateur
Salut Urlien,

<<<EDIT
hum.... On va dire que je ne l'ai pas lu....

<?php if(isset($_POST['valider'])){ 
...

EDIT;

Je ne t'ai pas oublié. Par contre, comme je t'avais demandé, tu ne m'as pas mis le code du controller. Or, il est essentiel. Bref, je t'ai fait un truc rapide ce midi (10 minutes) pour que tu comprennes la marche à suivre. Comme je t'avais dit, ce n'est pas ergonomique : ouvrir un nouvel onglet dans le navigateur. Mais bon apparemment ce sont tes contraintes....

/app/Controller/BlankController.php

<?php
class BlanksController extends AppController {
	public $uses = array(); //aucun model associé

	public function formulaire(){
		if($this->request->is('post')){
			//traitement des données ....
			//...
			//...
			//etc.			
			
			$this->set('unevariable',"valeur d'une variable");
			$this->render('pageblank'); // ! renvoi vers une autre vue (la target _blank)
		}else{
			//render vers formulaire.ctp
		}
	}
}


/app/Views/Blank/formulaire.ctp

<?php
	echo $this->Form->create(null,array('target' => '_blank', 'action' => "formulaire")); //aucun model associé
	//affichage inputs
	echo $this->Form->end('envoyer');
?>



/app/Views/Blank/pageblank.ctp
<?php echo $unevariable; ?>


Au passage, le javascript est totalement inapproprié puisqu'on peut le faire sans !
Aussi, j'ai vu que tu utilises un element. Si tu le retrouves plusieurs fois dans le site, son utilisation est pertinente. Sinon, une vue suffit amplement ! En appelant un élément, ça pompe de la ressource. Alors la gestion du cache va t'aider. Smiley cligne
Modifié par niuxe (17 Nov 2014 - 21:06)
Salut monsieur Lion, et merci pour le temps que tu as consacré...J'ai bien pris note de tes remarques, effectivement l'élément (par exemple n'est qu'utilisé sur une seul page et donc n'est pas nécessaire), je corrigerais cela prochainement...
Du coup pour le moment je reste comme ça (sans affichage popup), je pensais que ce serais plus lisible, mais a priori non, et comme je n'ai pas de contrainte.
Merci en tout les cas,
Actuellement je suis en train de me renseigne pour passe mon site en test sur mon hébergeur...Pression pression

Merci encore et bon Safari