Eu recebi um pacote que contém poucas extensões. Desejo redirecionar para minha exibição personalizada quando a instalação do pacote estiver totalmente concluída.
Pensei em tentar via script de instalação usando o método postflight como abaixo.
public function postflight($route, JAdapterInstance $adapter){
$app = JFactory::getApplication();
$app->enqueueMessage('Post Installation... ');
$app->redirect('index.php?option=com_mycomponent&view=install');
}
Problema: É como seqüestrar o instalador pela metade, redirecionando para uma visualização diferente. Por esse motivo, o pós-instalador processa como atualizar o servidor de atualização, as etapas de pós-limpeza não estão totalmente completas ...
Alterei um pouco o código do postflight como abaixo, usando o redirecionamento 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>');
}
Parece que está funcionando muito bem ... O redirecionamento acontece apenas após a instalação completa do pacote.
Precisa de alguns conselhos de especialistas aqui, existe alguma maneira decente de conseguir o mesmo ...
muitos desenvolvedores, inclusive eu, usam o postflight para finalizar a instalação, como colocar meu servidor de atualização no banco de dados e atualizar o ID de download e outras coisas.
Afinal, tentarei exibir um "modelo html" completo com a mensagem de instalação completa + alguns botões para criar o módulo básico com um clique, etc.
Portanto, tecnicamente, um método pós-vôo não é para instalação, é para limpeza e outras coisas que podem ser ignoradas.
Vou aconselhá-lo um pouco, muitas pessoas não gostam de redirecionar automaticamente após a instalação, mas a decisão está em seus ombros; )
felicidades!
De acordo com este referência para o script de instalação do componente personalizado, não era possível trabalhar apenas com esse código?
function install($parent){
// $parent is the class calling this method
$parent->getParent()->setRedirectURL('index.php?option=com_helloworld');
}
Isso deve ser redirecionado após a conclusão da instalação.
Atualização: Eu testei em um dos meus componentes e funciona