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

- - Dernière réponse : nejeh.dellai
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
- 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

2 réponses

Messages postés
23588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
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
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
-
Voilà une capture d'écran, le texte prend la position 0
jordane45
Messages postés
23588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
> nejeh.dellai
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
-
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
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
-
une nouvelle capture
nejeh.dellai
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
-
y a-t-il de réponse SVP j'ai eu toujours le même problème merci pour votre compréhension:

nejeh.dellai
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
-
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
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
0
Merci
voilà une capture
nejeh.dellai
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
-
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
Messages postés
23588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
-
'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
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
-
j'ai la remplacé comme vous m'avez dit mais elle me renvoie encore un Zéro !!
jordane45
Messages postés
23588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
-

mais elle me renvoie encore un Zéro

Qui elle ?
A quel endroit vois tu ce "zéro" ?
nejeh.dellai
Messages postés
14
Date d'inscription
mercredi 10 octobre 2018
Dernière intervention
28 octobre 2018
-
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.