Comment fonctionne -> save() ?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Comment fonctionne -> save() ?

    Bonjour,
    quelqu'un pourrait-il m'expliquer le fonctionnement de ->save().
    Voici ce que j'ai dans mon Controller , je souhaite mettre à jour available = 0
    $copy->available = "0";
    //$status = "0";
    $this->save();

    Le $copy est récupéré via mon model
    public function getCopy($pk = null)

    Cela semble fonctionner mais j'ai le message suivant qui s'affiche en front
    L'identifiant de sécurité ne correspondait pas. La demande a été interrompue pour empêcher toute violation de sécurité. Veuillez réessayer.
    Que dois-je faire ?

  • #2
    Bonjour,

    D'où vient la variable "available" ? un formulaire ?

    Votre message d'erreur est en général généré lors du contrôle du token d'un formulaire (dans le controller) : commande Session::checkToken()
    le token étant généré sur le formulaire par une commande dans le fichier tmpl du type <?php echo HtmlHelper::_('form.token'); ?>

    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Bonjour Pm available est récupéré dans $copy= $this->getModel('Book')->getCopy($getCopy);
      La fonction getCopy récupére un tableau
      ClaraHarrington aime ceci.

      Commentaire


      • #4
        J'ai en revanche solutionné mon problème en effectuant des requete sql. Mais ce serait plus propre et simple si je pouvais mettre a jour les champs de la table directement avec save()
        ClaraHarrington aime ceci.

        Commentaire


        • #5
          Envoyé par Slushgood Voir le message
          J'ai en revanche solutionné mon problème en effectuant des requete sql. Mais ce serait plus propre et simple si je pouvais mettre a jour les champs de la table directement avec save()
          Bonjour, #Slushgood! eh bien Bravo! tu n'as donc plus utilisé le fonctionnement "save"?

          Commentaire


          • #6
            Hello.

            De quelle classe hérite ton contrôleur ?

            Si tu regardes la méthode save de JControllerForm tu constateras quelle vérifie en 1er lieu le token (dans J3.x ligne 628 de /librairies/src/MVC/controller/FormControleur.php)
            et qu'ensuite il récupère les $data a enregistrer de ce formulaire.
            Code PHP:
            /**
            * Method to save a record.
            *
            * @param string $key The name of the primary key of the URL variable.
            * @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions).
            *
            * @return boolean True if successful, false otherwise.
            *
            * @since 1.6
            */
            public function save($key null$urlVar null)
            {
            // Check for request forgeries.
            $this->checkToken();

            $app \JFactory::getApplication();
            $model $this->getModel();
            $table $model->getTable();
            $data $this->input->post->get('jform', array(), 'array');
            ..... 
            Il faut donc s'il y ai eu un formulaire généré par JForm de renvoyé par le requête http

            Le méthode save du contrôleur n'est donc pas du tout adaptée à ton besoin à priori.

            Moi je ferais plutôt (dans ton contrôleur) :
            Code PHP:
            $model $this->getModel();
            $table $model->getTable();
            .... 
            Et ensuite tu appelles les méthodes de Jtable (voir : https://docs.joomla.org/Using_the_JTable_class).

            Ou effectivement directement une requête sur la bonne table (sans utiliser le model, peu d’intérêt pour si peu...)
            voir : https://docs.joomla.org/Inserting,_U...g_JDatabase/fr
            Dernière édition par roland_d_alsace à 24/11/2021, 14h06
            A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
            Rejoignez le Joomla Users Groupe Alsace...
            roland_d_alsace va-t-il devenir roland_du_grand_est ?

            Commentaire


            • #7
              merci Roland pour ces précisions.

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X