web-dev-qa-db-fra.com

MVC quelle étape définit une tâche si aucune fournie

J'essaie de comprendre la logique MVC de Joomla. aidez-moi s'il vous plaît à comprendre le traitement de la tâche

Le code non édité d'un package Joomla a le formulaire d'édition d'article frontal avec le champ de tâche, mais sa valeur est manquante (fichier racine/composants/com_content/views/form/tmpl/edit.php):

<input type="hidden" name="task" value="" />

Par défaut, l'URL de l'action du formulaire n'a pas de paramètre de tâche. Voici comment je vois l'URL de l'action:

JRoute::_('index.php?option=com_content&a_id=' . (int) $this->item->id); ?>

Je ne suis pas sûr, mais je pense que lorsque le flux atteint le point d'entrée du composant, dans ce cas le fichier racine/composants/com_content/content.php, l'entrée inclut une tâche article.save.

Les données d'entrée que je reçois sont:

 ["data":protected]=>
  &array(13) {
    ["a_id"]=>
    string(1) "7"
    ["jform"]=>
    array(12) {
      ["title"]=>
      string(69) "Test 1"
      ["version_note"]=>
      string(0) ""
      ["state"]=>
      string(1) "1"
      ["publish_up"]=>
      string(19) "2018-05-23 05:37:29"
      ["publish_down"]=>
      string(0) ""
      ["tags"]=>
      array(3) {
        [0]=>
        string(1) "2"
        [1]=>
        string(1) "4"
        [2]=>
        string(1) "6"
      }
      ["metadesc"]=>
      string(0) ""
      ["metakey"]=>
      string(0) ""
      ["articletext"]=>
      string(181) "<p>TEST This is some text</p>
<p>Line 1</p>
<p>Line 2</p>
<p> </p>
<p>Line 3</p>
<p> </p>
<p>Line 7</p>"
      ["com_fields"]=>
      array(1) {
        ["testfield"]=>
        string(27) "<span class="star">@</span>"
      }
      ["catid"]=>
      string(1) "8"
      ["language"]=>
      string(1) "*"
    }
    ["task"]=>
    string(12) "article.save"
    ["return"]=>
    string(180) "aW5kZXgucGhwP29wdGlvbj1jb21fY29udGVudCZ0YXNrPWFydGljbGUuZWRpdCZhX2lkPTcmcmV0dXJuPWFIUjBjSE02THk5c2IyTmhiR2h2YzNRdmMyaHZjblJ6ZEc5eWVTNXpjR0ZqWlM5d2RXSnNhV05mYUhSdGJDOTBaWE4wTFRFPQ=="
    ["13456789"]=>
    string(1) "1"
    ["option"]=>
    string(11) "com_content"
    ["view"]=>
    string(8) "category"
    ["layout"]=>
    string(4) "blog"
    ["id"]=>
    string(1) "8"
    ["Itemid"]=>
    string(3) "101"
  }

Où est la tâche définie?

Étant donné que le fichier edit.php d'origine ne contient pas de valeur pour le champ de tâche, existe-t-il un autre champ dans ce formulaire qui influence le paramétrage de la tâche dans un fichier appelé lorsque je clique sur le bouton Enregistrer?

Comme j'essaie de communiquer ci-dessus, l'entrée du composant indique ["task"] => string (12) "article.save" lorsque le fichier de point d'entrée du composant est appelé (c'est-à-dire, root/components/com_content/content.php "

Étant donné que le paramètre de tâche URL est absent de l'action du formulaire, l'URL à partir de laquelle je fais la demande influence-t-elle le code qui définit la tâche?

Je me félicite de toute information en aidant à comprendre la logique MVC de Joomla

2
IberoMedia

Si vous inspectez le bouton à l’arrière, vous remarquerez qu’il s’agit généralement de <button onclick="Joomla.submitbutton('view.task');"></button>. Quand Joomla.submitbutton est appelé, la valeur qui y est passée est automatiquement transférée dans <input type="hidden" name="task" /> si trouvé à l'intérieur d'un <form> avec l'ID adminForm.

Sinon, les contrôleurs font automatiquement passer toutes les tâches à view.display si aucune tâche n’est donnée.

2
Chaosxmk