Redirect to a page passing an object

4

I need to pass an object to a page. For example: I would like the moment I redirect to a certain page that will display the html, that in it I could retrieve that object and use whatever is in it.

Would anyone have an example of how to do this?

Here's an example I've tried to explain better:

<?php

include_once $_SERVER['DOCUMENT_ROOT'] . '/exemplomvc/src/model/to/CadastroTO.php';
include_once $_SERVER['DOCUMENT_ROOT'] . '/exemplomvc/src/model/cadastro.php';

class CadastroController {

    private $cadastroTO;
    private $cadastro;

    public function __construct() {

        $this->cadastroTO = new CadastroTO();

        $this->inicializa();
    }

    /*
     * 
     */
    public function inicializa() {

        $codigo = (int) $_POST['codigo'];
        $nome = (String) $_POST['nome'];

        $this->cadastroTO ->setCodigo($codigo);
        $this->cadastroTO ->setNome($nome);

        $this->cadastro = new Cadastro($this->cadastroTO);    

        try {

            //variável a ser passada para a pagina.
            $dados = $this->cadastro ->consultar();

            header("Location: " . $_SERVER['DOCUMENT_ROOT'] . '/exemplomvc/index.php');

        } 
        catch(CadastroException $erro) {

           echo $erro ->getMessage();
        }
    }
}

$obj = new CadastroController();

When this class is called, it will redirect to a page that has the html, and on this page I would like to retrieve this variable "$ data" which contains an instance of the class with gets and sets.

Would it be the best way to start the session variable?

    
asked by anonymous 15.12.2014 / 14:07

1 answer

1

You can use as a parameter the object to be passed in the method that redirects to the page and capture. I usually use a view class that I always call in the controller.

Example:

/**
 * Description of View
 *
 * @author Francisco Nascimento
 * @email [email protected]
 */
class View  extends Atributos{
    #Armazena o Conteudo html da view
    private $_Contents;

    #armazena o arquivo html,tpl,phtml

    private $_view;
    #Armazena os parametros a serem mostrados na view

    private $_parameters;

    #PASSA MESSAGE


    public function __construct($_view = NULL, $_parameters = NULL) {

        if($_view != NULL){

            $this->setView($_view);

            $this->_parameters = $_parameters;


        }
    }
        /**
       * Define qual arquivo html deve ser renderizado
       * @param string $st_view
       * @throws Exception
       */
        public function setView($view){

            if(file_exists($view)){

                $this->_view = $view;

            }else{

                $_view = PATH_INCLUDE."404.php";
                $this->setView($_view);
            }
        }

        /**
        * Retorna o nome do arquivo que deve ser renderizado
        * @return string 
        */

        public function getView(){

            return $this->_view;
        }

        /**
        * Define os dados que devem ser repassados é view
        * @param Array $v_params
        */
        public function setParameters(array $_parameters){

            $this->_parameters = $_parameters;

        }

        /**
        * Pega os dados que foram passados como parametro para a pagina
        * @return Array
        */

        public function getParameters(){


            return $this->_parameters;
        }

        /**
        * Retorna uma string contendo todo 
        * o conteudo do arquivo de visualização
        * 
        * @return string
        */

        public function getContents(){

           ob_start();


           if(isset($this->_view)){

                require_once($this->_view);


           }

           $this->_Contents = ob_get_contents();

           ob_end_clean();

           return $this->_Contents;
        }

         /**
         * Imprime o arquivo de visualização
         */

         public function showContents()

         {
             echo $this->getContents();


         }



}

      class ListaController{

             public $_view;

             public function CompararItemAction()
             {
                 # Verifica se o usuario esta logado

                 Functions::is_logado();

                # Instancia para pegar o parametro id da url

                $app = Registry::getInstance("Application");

                # Retorna o id da url
                $id = $app->getParam('srcid');

                # Array para receber os dados dos produtos
                $produtos = array();

                # Atribui os dados dos produtos e dos mercados no array

                $produtos['Produtos'] = $this->getProdutosLista($id);
                $produtos['mercados'] = $this->getMercados();



                /* $produtos é um array de objetos passado como parametro
                   no meu caso ja tenho um netodo para capturar os dados
                   atribuidos para $produtos a idéia é mostrar como passar o parametro
                   para a view

                   a classe View recebe dois parametros, a pagina a ser mostrada e os parametros a ser exibido na pagina
                */
                # Chama a pagina Correspondente

                $this->_view = new View(PATH_VIEW . "Lista_CompararItem.phtml",$produtos);
                $this->_view->showContents();

         }
    }
    
15.12.2014 / 15:24