web-dev-qa-db-fra.com

Rediriger une fois l'installation du package terminée

J'ai un paquet qui contient peu d'extensions. Je souhaite rediriger vers ma vue personnalisée une fois l'installation du package terminée.

J'ai pensé à essayer via un script d'installation en utilisant la méthode postflight ci-dessous.

public function postflight($route, JAdapterInstance $adapter){
    $app = JFactory::getApplication();
    $app->enqueueMessage('Post Installation... ');

    $app->redirect('index.php?option=com_mycomponent&view=install');
}

Problème: C'est comme détourner à moitié le programme d'installation en redirigeant vers une vue différente. De ce fait, les processus post-installation, tels que la mise à jour du serveur de mise à jour, complètent mal les étapes de post-nettoyage.

J'ai légèrement modifié le code postflight comme ci-dessous en utilisant la redirection javascript.

public function postflight($route, JAdapterInstance $adapter){
    $jurl = JURI::base();
    $app = JFactory::getApplication();
    $app->enqueueMessage('Redirect to complete the Installation process... <script>window.location.href="'.$jurl.'index.php?option=com_mycomponent&view=install";</script>');
}

Il semble que cela fonctionne très bien ... La redirection ne se produit qu'après l'installation complète du paquet.

Vous avez besoin de conseils d'experts? Y at-il un moyen décent d'atteindre le même objectif?.

5
Malaiselvan

de nombreux développeurs, dont moi, utilisent postflight pour finaliser l’installation, par exemple pour mettre mon serveur de mise à jour dans une base de données, mettre à jour un identifiant de téléchargement, etc.

Après tout, je vais essayer d’afficher un "modèle html" complet avec le message d’installation complète + quelques boutons pour créer un module de base en un clic, etc.

Donc techniquement, une méthode postflight n’est pas destinée à l’installation, mais au nettoyage et à d’autres tâches qui peuvent être ignorées.

Je vous conseillerai un peu, peu de gens aimeront rediriger automatiquement après l’installation, mais la décision est entre vos épaules; )

à votre santé!

2
Lanah

Selon ce référence pour le script d'installation du composant personnalisé, ne pourrait-il pas simplement travailler avec ce code?

function install($parent){
        // $parent is the class calling this method
        $parent->getParent()->setRedirectURL('index.php?option=com_helloworld');
}

Cela devrait rediriger une fois l'installation terminée.

Mise à jour: Je l'ai testé dans l'un de mes composants et cela fonctionne

1
Kitase88