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?.
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é!
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