web-dev-qa-db-pt.com

Redirecionar após concluir a instalação do pacote

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 ...

5
Malaiselvan

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!

2
Lanah

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

1
Kitase88