Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Giihh

OO enviar dados para view

Recommended Posts

Olá,

 

Como fazer para depois de elaborar uma function no controller enviar os dados para a view especificada na própria function? de forma que quando criar a view não precisar fazer include ou algo parecido. e sim já colocar as variaveis do DB que serão chamadas?

 

Preciso de algum exemplo

 

Agradeço ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Normalmente os frameworks implementam algum método como [inline]assing[/inline] na view.

 

Basicamente, você tem algo assim:

class View {
    private $vars = array();

    // ...

    public function assign($key, $value) {
        $this->vars[(string) $key] = $value;
    }

    public function __get($key) {
        return isset($this->vars[(string) $key]) ? $this->vars[(string) $key] : '';
    }

    // ...

    public function render($template, $withVars = true) {
        // renderiza o template... se $withVars = true, passa as variáveis setadas para a view
        include $template;
    }
}

No seu controller, você faz algo como:

$view = new View();
$view->assign('someAssignedVar', 'Foo');

$view->render();

Se você estiver usando templates baseados em PHP, basicamente o que você precisa fazer é:

//file mytemplate.php
<div id="foo">
<?php echo $this->someAssignedVar ?>
</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ideia geral é simples: uma classe que representa a View, que possui um array com as variáveis e um método para exibir (render) o HTML

 

Veja este artigo, simples e direto ao ponto:

http://www.devx.com/webdev/create-your-own-mvc-framework.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Possibilidades existem aos montes. A mais comum é a injeção através de um placeholder, como já foi mencionado.

 

Por exemplo, no link abaixo, demonstro através da biblioteca, interna do PHP, DOMDocument. A leitura de um template, construção de trechos de HTML e a injeção dos códigos no template.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pelas respostas. Gostei de aprender sobre o DIRECTORY_SEPARATOR e deu pra ter uma ideia Beraldo.

 

 

Possibilidades existem aos montes. A mais comum é a injeção através de um placeholder, como já foi mencionado.

 

Injeção de placeholder é o que foi mencionado pelo Henrique Barcelos?

 

 

 

Normalmente os frameworks implementam algum método como [inline]assing[/inline] na view.

 

Basicamente, você tem algo assim:

class View {
    private $vars = array();

    // ...

    public function assign($key, $value) {
        $this->vars[(string) $key] = $value;
    }

    public function __get($key) {
        return isset($this->vars[(string) $key]) ? $this->vars[(string) $key] : '';
    }

    // ...

    public function render($template, $withVars = true) {
        // renderiza o template... se $withVars = true, passa as variáveis setadas para a view
        include $template;
    }
}

 

Sinceramente não entendi muito bem o exemplo acima.

 

 

Por exemplo, no link abaixo, demonstro através da biblioteca, interna do PHP, DOMDocument. A leitura de um template, construção de trechos de HTML e a injeção dos códigos no template.

 

Faltou o link

Compartilhar este post


Link para o post
Compartilhar em outros sites

Injeção de placeholder é o que foi mencionado pelo Henrique Barcelos?

Sim, de forma similar. Você define um palavra-chave, com alguma marcação especial(placeholder), e substitui ela por um valor/variável.

 

No exemplo do Henrique Barcelos, existem a questão "taggead" [inline].

 

Em outros locais, vi o uso apenas de chaves "{}". Algo assim:

<p>{placeholder}</p>

Uso:

$this->assignment('placeholder' , 'subsituição de placeholder');

Saída:

<p>subsituição de placeholder</p>

Faltou o link

Erro meu: http://forum.imasters.com.br/topic/536201-mvc-paginas-dinamicas/?p=2141430

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.