Joomla.it Forum

Non solo Joomla... => Sviluppo => : Alhazred 30 Apr 2011, 10:39:03

: [Risolto] Mancato redirect
: Alhazred 30 Apr 2011, 10:39:03
Nel controller di un un componente, dopo aver inviato dei dati da frontend questi vengono elaborati e salvati nel db.
Fin qui tutto ok, il problema arriva quando si deve effettuare il redirect.

La funzione che si occupa della manipolazione dei dati finisce così

if (!$row->store())
{
echo "<script type='text/javascript'>
alert('".$row->getError()."');
window.history.go(-1);
  </script>\n";
exit();
}
$this->redirect('index.php?option=' . $option . '&id=' . $post['pollid'] . '&view=poll', JTEXT::_(CRDPOLL_VOTE_ADDED));

la store() va a buon fine tant'è che nel db trovo i dati e sono correttamente disponibili dal resto del componente, il redirect però mi porta ad una pagina bianca con solo il titolo del componente.

Il link che viene fornito alla funzione redirect è giusto, ho messo queste righe nel codice per provare

echo 'index.php?option=' . $option . '&id=' . $post['pollid'] . '&view=poll' . ' --- ' . JTEXT::_(CRDPOLL_VOTE_ADDED);
$this->redirect('index.php?option=' . $option . '&id=' . $post['pollid'] . '&view=poll', JTEXT::_(CRDPOLL_VOTE_ADDED));
echo "<pre>";
print_r($this);
echo"</pre>";

Il primo echo mi stampa il link per il redirect ed è corretto, facendo copia/incolla sulla barra degli indirizzi mi porta alla pagina che voglio.
print_r($this) mi stampa questo:
:
CommpollsController Object
(
    [_basePath] => C:\xampp\htdocs\joomla\j15x\prove\components\com_commpolls
    [_name] => commpolls
    [_methods] => Array
        (
            [0] => addvote
            [1] => display
        )

    [_taskMap] => Array
        (
            [addvote] => addvote
            [display] => display
            [__default] => display
        )

    [_task] => addvote
    [_doTask] => addvote
    [_path] => Array
        (
            [view] => Array
                (
                    [0] => C:\xampp\htdocs\joomla\j15x\prove\components\com_commpolls\views\
                )

        )

    [_redirect] =>
    [_message] =>
    [_messageType] => message
    [_acoSection] =>
    [_acoSectionValue] =>
    [_errors] => Array
        (
        )

    [_data] => Array
        (
        )

    [redirect] => index.php?option=com_commpolls&id=1&view=poll
)
Perché poi non vengo inviato alla pagina index.php?option=com_commpolls&id=1&view=poll ?
Nell'entry point del componente ovviamente ho

$controller = new CommpollsController();
$controller->execute( JRequest::getVar( 'task' ) );
$controller->redirect();
: Re:Mancato redirect
: Alhazred 30 Apr 2011, 11:35:57
Risolto, andava usato setRedirect