Giihh 6 Denunciar post Postado Agosto 25, 2015 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
Beraldo 864 Denunciar post Postado Agosto 25, 2015 Você quer entender como isso é feito em frameworks ou quer saber como fazer em um framework específico? Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Agosto 25, 2015 Oi Beraldo, eu quero entender como fazer isso sem framework Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Agosto 25, 2015 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
Beraldo 864 Denunciar post Postado Agosto 25, 2015 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
Gabriel Heming 766 Denunciar post Postado Agosto 25, 2015 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
Giihh 6 Denunciar post Postado Agosto 25, 2015 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
Gabriel Heming 766 Denunciar post Postado Agosto 25, 2015 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