web-dev-qa-db-fra.com

Étendre la publication dans le contrôleur?

Je voudrais étendre la fonction (un) publication dans un sous-contrôleur.

Je pensais qu'il serait suffisant d'écrire quelque chose comme ça dans mon sous-élément items.php:

    public function unpublish()
    {
        echo "Test";
        die;
    }

Mais rien ne se passe en dépubliant mes articles. Que puis-je faire ici?

5
MyFault

Jetez un oeil à JControllerAdmin ce qui est utilisé pour étendre votre contrôleur.

Dans la fonction __construct On ligne 62unpublish est configuré pour utiliser la fonction publish. Donc, il n’ya pas de fonction comme unpublish.

Et dans la fonction publish, vous pouvez obtenir le nom de la tâche avec $task = $this->getTask();.

Les valeurs possibles sont publish, unpublish, archive, trash et report. Vous pouvez donc comparer, s'il s'agit de publish ou unpublish, et effectuer des actions en fonction de cela.

Votre fonction pourrait ressembler à ceci:

public function publish()
{
    $task = $this->getTask();

    // Do your custom actions
    if($task == 'unpublish'){
        // Do something on unpublishing item(s)
    }else if($task == 'publish'){
        // Do something on publishing item(s)
    }

    // Call parent function, so item(s) will get published/unpublished like they are used to
    parent::publish();
}
4
Rene Korss