Problème avec Cakephp 3 et Ajax

Par Skraf, il y a 9 ans


Bonsoir,

Je voudrais utiliser Ajax sous Cakephp 3 pour récupérer une clé dans ma base de données.
Seulement, je voulais savoir comment diriger l'url d'action de ma fonction Ajax vers mon Controller:

Controller : Install,
Action: ajax_step1

Malheurement, je sais pas comment faire, voici ce que j'ai actuelement:

var PATH_TO_ACTION = "<?= $this->Url->build(null, ['controller' => 'Install', 'action' => 'ajax_step1']) ?>";

Cordialement

3 réponses

Skraf, il y a 9 ans

Bonjour,
Mais le problème c'est que si je mes rien, tout le style de ma page disparait, il me reste que le html :/

Cordialement

Skraf, il y a 9 ans

Il y a une erreur, mais elle s'affiche et disparait aussi tôt.
Ceci dit, en regardant dans l'inspection de l'élément, je vois que:

<?= $this->Url->build(null, ['controller' => 'Install', 'action' => 'ajax_step1']) ?>

M'affiche tout le code source de la page.

Cordialement

Skraf, il y a 9 ans

Je viens de l'enlever, mais ça me fait toujours la meme chose.

Voici mon code:

Step.ctp:

<div class="install"> <?php if (isset($Step1)){ ?> <div class="step"> <a><b>Étape 1</b></a> <br> <a>Étape 2</a> <br> <a>Étape 3</a> </div> <div class="content-install"> <div class="title"> <h2>Saisie de la clé</h2> </div> <div class="form-install"> <?php echo $this->Form->create('', ['method' => 'post', 'url' => false]); echo $this->Form->input('key', ['placeholder' => 'Entrez votre clé de sécurité', 'id' => 'key', 'label' => false]); echo $this->Form->button('Vérifier', ['id' => 'submit', 'class' => 'lf-btn']); echo $this->Form->button('Effacer', ['id' => 'key_clear', 'class' => 'lf-btn', 'type' => 'button']); echo $this->Form->end(); ?> </div> <div id="next"></div> </div> <script type="text/javascript"> $('#submit').submit(function(){ var KEYFORM = $('#key').val(); $.ajax({ url: '<?php echo $this->Url->build(['controller' => 'install', 'action' => 'ajax_step1']); ?>', type : 'POST', data : KEYFORM, success : function(response) { alert(); } }); }); </script> <?php }elseif(isset($Step2)){ ?> <div class="step"> <a>Étape 1</a> <br> <a><b>Étape 2</b></a> <br> <a>Étape 3</a> </div> <?php }elseif(isset($Step3)){ ?> <div class="step"> <a>Étape 1</a> <br> <a>Étape 2</a> <br> <a><b>Étape 3</b></a> </div> <?php }else{ } ?> </div>

InstallController.php:

<?php namespace App\Controller; use App\Controller\AppController; class InstallController extends AppController { public function initialize() { parent::initialize(); $this->loadComponent('RequestHandler'); } public function step() { $this->set('pageTitle', 'Installation'); $this->viewBuilder()->layout('World.install.template'); if (file_exists(ROOT . DS . 'install' . DS . 'step.txt') AND !file_exists(ROOT . DS . 'install' . DS . 'installed.txt')){ $file = fopen(ROOT . DS . 'install' . DS . 'step.txt', 'r+'); $getLineFile = fgets($file); if ($getLineFile == '1'){ $this->set('Step1', 'Step1'); }elseif($getLineFile == '2'){ $this->set('Step2', 'Step2'); }elseif($getLineFile == '3'){ $this->set('Step3', 'Step3'); }else{ } fclose($file); }else{ $this->redirect('/'); } } public function ajax_step1(){ if($this->request->is('ajax')) { } }

Cordialement