Remise à 0 de la position du curseur PHP/Symfony 3

nejeh - 10 oct. 2018 à 09:52 - Dernière réponse : nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention
- 11 oct. 2018 à 12:53
Bonjour,
J'ai pu récupérer la position correcte du curseur dans la requête ajax mais dans le contrôleur, elle est toujours réinitialisé à 0. Je ne comprenais pas d’où vient ce problème ni comment le résoudre car c’est la première fois que j’utilise ajax. Je ne peux pas vraiment comprendre comment ça marche Merci pour votre compréhension! voici mon nouveau script: voici mon template: new.html.twig

{% extends '::layoutv.html.twig' %}

{% block stylesheets %}
{% endblock %}

{% block titre %}
{% endblock %}

{% block body %}

    {#{{ tinymce_init({'use_callback_tinymce_init': true, 'theme': {'simple': {'menubar': false}}}) }}#}
    <div>
        <h1>
            Insertion des projets
        </h1>
    </div>
    <!-- BEGIN DISPLAY THE FLASH MESSAGES -->
    {% for flashMessage in app.session.flashbag.get('error') %}
        <div class="alert alert-error">
            <button class="close" data-dismiss="alert"></button>
            <strong><i class='icon-remove'></i> </strong> {{ flashMessage }}
        </div>
    {% endfor %}
    <!--  END DISPLAY THE FLASH MESSAGES -->

    <div class="row-fluid">
        <div class="span6">


            <div class="portlet-body form">
                <!-- BEGIN FORM-->
                <form id="formProject" class="form-horizontal"
                      action="{{ path('new_project') }}" enctype="multipart/form-data" method="post" }>
                    <div class="control-group">
                        <label class="control-label">Télécharger une image</label>
                        <div class="controls">
                            <input type="file" name="image">
                            </br>
                            <div class="row">
                                <div class="col-sm-8">
                                    {{ form_row(formProject.texte|raw) }}
                                </div>
                            </div>

                        </div>
                        </br>
                    </div>
                    <div class="controls margin-bottom-30">
                        <button type="submit" name="submit" class="btn green" id="btnSubmit">Valider</button>
                        <button type="reset" class="btn yellow">Annuler</button>
                    </div>
                    {{ form_rest(formProject) }}
                </form>
                <!-- END FORM-->
            </div>

        </div>
    </div>

{% endblock %}


  {% block javascripts %}
      <script type="text/javascript"
              src="{{ asset('bundles/formationminip/plugins/tinymce/tinymce.min.js') }}"></script>
      <script type="text/javascript"
              src="{{ asset('bundles/formationminip/plugins/jquery-ui/jquery-ui.min.js') }}"></script>
      <script type="text/javascript" src="{{ asset('bundles/formationminip/js/text.js') }}"></script>

{#-----------------------------------------------------------------------------------------------------------------#}

      <script type="text/javascript">

          $(document).ready(function() {
              $('#btnSubmit').click(function() {
                  texta = document.getElementById("formation_minipbundle_project_texte");
                  var start = texta.selectionStart;
                  console.log(start);
                  var route="{{url('new_project')}}?pos="+start;
                  console.log(route);
                  $.ajax({
                      url: route,
                      type: "POST",
//                  async: false,
                      //data:{ pos : start},
                      success: function() {
                          console.log("success");
                      }
                  });
              });
          });
          //
      </script>

  {% endblock %}




mon action dans le controller :



    /**
     * @Route("/create", name="new_project")
     */

    public function createAction(Request $request) {
        $project = new Project();
        $em = $this->getDoctrine()->getEntityManager();
        $formProject = $this->createForm('Formation\MiniPBundle\Form\ProjectType', $project);
        $formProject->handleRequest($request);
            if ($formProject->isValid()) {
            if(isset($_POST['submit'])){
                $file_name = $_FILES['image']['name'];
                $file_tmp = $_FILES['image']['tmp_name'];
                move_uploaded_file($file_tmp,$file_name);
                header ("Content-type: image/jpeg");
                $string=$formProject->get('texte')->getData();

                $text= filter_var($string, FILTER_SANITIZE_STRING); //Supprimer les balises.
                $font = 15;
                $width = imagefontwidth($font) * strlen($string);

                $height = imagefontheight($font) ;

                switch (strtolower(pathinfo($file_name, PATHINFO_EXTENSION))){
                    case "jpg" :
                        $im = imagecreatefromjpeg($file_name);
                        break;
                    case "gif" :
                        $im = imagecreatefromgif($file_name);
                        break;
                    case "png" :
                        $im = imagecreatefrompng($file_name);
                        break;
                    case "bmp":
                        $im = imagecreatefrombmp($file_name);
                        break;

                    default :
                        trigger_error("Error Bad Extention");
                        exit();
                        break;
                }

              $position=intval($request->request->get('pos'));
               var_dump($position);  // renvoie 0
               $y = imagesy($im) - $height;

                $textColor = imagecolorallocate ($im, 255, 255,255);

                /*----------------------------------------*/
                imagestring($im, $font, $position, $y, $text, $textColor);
                $project->setLogo($file_name);
                $em->persist($project);
                $em->flush();
                imagejpeg($im);
        }}

        return $this->render('FormationMiniPBundle:Project:new.html.twig', array(
            'project' => $project,
             'request'=> $request->request->get('pos'),
            'formProject' => $formProject->createView(),
        ));
    }


Afficher la suite 

Votre réponse

17 réponses

jordane45 22750 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 11 octobre 2018 Dernière intervention - 10 oct. 2018 à 10:09
0
Merci
Bonjour,
Que retourne ton console.log(route); ?

Ensuite, si tu fais du POST ... pourquoi passer la variable dans l'URL ??
Autant remettre ce que tu avais bien mis au départ :
data:{ pos:start},

Tu pourras alors essayer de récupérer la variable pos comme ça
$position= !empty($_POST['pos']) ? intval($_POST['pos']) : 0;


Tu peux aussi vérifier, via le debugger de ton navigateur ( pour l'ajax je recommande d'utiliser FIREFOX, Sinon, sous chrome il faut installer le plugin Ajax debuger )
Et voir les données envoyées dans ta requête AJAX.
Tu sauras alors si le souci vient de ton JS ... ou du code PHP
nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention - 10 oct. 2018 à 10:59
Voilà une capture d'écran, le texte prend la position 0
jordane45 22750 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 11 octobre 2018 Dernière intervention > nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention - 10 oct. 2018 à 11:04
ce qui serait bien ça serait de déplier la ligne contenant les infos de ta requête ajax.... (là où il y a la petite flèche au niveau du "starttime" ... )
sinon.. comment peux tu savoir quelles sont les paramètres envoyés par ton ajax ??
nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention - 10 oct. 2018 à 11:09
une nouvelle capture
nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention - 10 oct. 2018 à 11:31
y a-t-il de réponse SVP j'ai eu toujours le même problème merci pour votre compréhension:

nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention - 10 oct. 2018 à 12:53
dans le tableau $_PSOT il n'y a que le texte est envoyé mais la position n'est pas envoyé. je n'ai pas compris pourquoi et comment faire pour résoudre ce problème ?
merci de me donne l'aide !
Commenter la réponse de jordane45
nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention - 10 oct. 2018 à 13:09
0
Merci
voilà une capture
nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention - 11 oct. 2018 à 11:54
Voilà mon fonction :


    /**
     * @Route("/create", name="new_project")
     */

    public function createAction(Request $request) {



        $project = new Project();
        $em = $this->getDoctrine()->getEntityManager();
        $formProject = $this->createForm('Formation\MiniPBundle\Form\ProjectType', $project);
        $formProject->handleRequest($request);
        if ($formProject->isValid()) {
            if(isset($_POST['submit'])){
                $file_name = $_FILES['image']['name'];
                // var_dump($file_name);
                $file_tmp = $_FILES['image']['tmp_name'];
                //   var_dump($file_tmp);
                move_uploaded_file($file_tmp,$file_name);
                header ("Content-type: image/jpeg");
                $string=$formProject->get('texte')->getData();

                $text= filter_var($string, FILTER_SANITIZE_STRING); //Supprimer les balises.
                $font = 15;
                $width = imagefontwidth($font) * strlen($string);

                $height = imagefontheight($font) ;

                switch (strtolower(pathinfo($file_name, PATHINFO_EXTENSION))){
                    case "jpg" :
                        $im = imagecreatefromjpeg($file_name);
                        break;
                    case "gif" :
                        $im = imagecreatefromgif($file_name);
                        break;
                    case "png" :
                        $im = imagecreatefrompng($file_name);
                        break;
                    case "bmp":
                        $im = imagecreatefrombmp($file_name);
                        break;

                    default :
                        trigger_error("Error Bad Extention");
                        exit();
                        break;
                }


                /*--------------------------------------------------*/
                $public_file_path = '.';
                //  $position=$request->request->get('pos');
                //     var_dump($request->request->all());
                  $y = imagesy($im) - $height;

                $position= !empty($_POST['pos']) ? intval($_POST['pos']) : 0;
                print_r($_POST);
                $textColor = imagecolorallocate ($im, 255, 255,255);
                $textIm=$position.$file_name;
                /*----------------------------------------*/
                imagestring($im, $font, $position, $y, $text, $textColor);
                $project->setLogo($file_name);
                $em->persist($project);
                $em->flush();
                imagejpeg($im, $public_file_path . '/uploads/textImage/'.$textIm, 100);
                imagejpeg($im);


            }}

        return $this->render('FormationMiniPBundle:Project:new.html.twig', array(
            'project' => $project,
            'request'=> $request->request->get('pos'),
            'formProject' => $formProject->createView(),
        ));
    }




jordane45 22750 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 11 octobre 2018 Dernière intervention - 11 oct. 2018 à 12:10
'request'=> $request->request->get('pos'),

Dis voir ... c'est sûrement pour ça que tu penses que ta valeur est à zéro non ?
Il faut remplacer par
'request'=> $position,
nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention - 11 oct. 2018 à 12:17
j'ai la remplacé comme vous m'avez dit mais elle me renvoie encore un Zéro !!
jordane45 22750 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 11 octobre 2018 Dernière intervention - 11 oct. 2018 à 12:34

mais elle me renvoie encore un Zéro

Qui elle ?
A quel endroit vois tu ce "zéro" ?
nejeh.dellai 9 Messages postés mercredi 10 octobre 2018Date d'inscription 11 octobre 2018 Dernière intervention - 11 oct. 2018 à 12:53
c'est celle qui renvoie un " zéro"
 $position= !empty($_POST['pos']) ? intval($_POST['pos']) : 0;
   print_r($position);

voilà une capture qui nous montre ce résultat: ( remarque il n'a pas d'erreur dans le code j'ai juste écrit une fausse variable pour arrêter l'exécution afin de voir ce renvoie comme résultat )
il y a un "zéro" en haut à gauche dans la capture




et voilà une autre capture qui nous montre que le texte est à la position 0 et devant response il n'a pas de valeur renvoyé c-à-d "zéro" ??

Commenter la réponse de nejeh.dellai

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.