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
Auteur

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
Auteur

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
Auteur

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