vinicvo 4 Denunciar post Postado Julho 10, 2009 Olá... Eu estou desenvolvendo um sistema de loja virtual para um cliente. Eu estou criando todas as páginas php com as funções separadamente e depois estou inserindo o layout como um arquivo externo. Para que possam entender melhor eu estou fazendo o seguinte:´ Uma mesma página(no caso a index) chama o arquivo de funções e o arquivo de layout. Contudo, as variáveis que eu estou definindo no arquivo das funções não estão aparecendo no layout e o php retorna um erro "variable $ undefined" de variável indefinida. Eu queria saber se vocês conhecem uma solução para o problema de modo que eu possa continuar com esse mesmo esquema, usando a index como o "visualizador" da página. No caso eu preciso saber como tornar essas variáveis possíveis de serem acessadas da página de layout. Desde já, agradeço! ^^ Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Julho 10, 2009 faz assim. posta ai a linha e o erro ;) Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Julho 10, 2009 essa variável é declarada dentro ou fora da função ? não entendi 100% como está a estrutura, mas sugiro que estude o uso da função "global" http://us2.php.net/manual/en/language.variables.scope.php Compartilhar este post Link para o post Compartilhar em outros sites
vinicvo 4 Denunciar post Postado Julho 11, 2009 Vou dar um exemplo de como eu estou fazendo, para que fique um pouco mais claro ^^ Tenho uma página inicial index.php. Essa página index tem um include de várias outras páginas. Um desses includes é uma página com uma função pra carregar outras páginas. Outra função carrega a página de layout. Então tenho: <?php //INDEX.PHP $carrega = new Loader(); $carrega->('home') $layout = new Layout(); $layout->('temas/layout'); ?> Até aqui tá tudo certo. Então eu tenho a página(home) que é só código php que define as variáveis. Depois tenho o layout(temas/layout) que vai usar essas variáveis. As páginas são inseridas normalmente e abrem. Agora vem o problema: Na página home eu defino uma variável chamada $teste. Só que quando eu vou chamar essa variável no layout, ele não encontra. Aí dá o erro: Notice: Undefined variable: testein "endereço" on line 6 Na função que eu estou usando, eu uso o método include para inserir as páginas. Em resumo, eu estou usando uma página para carregar duas. E em uma das páginas carregadas eu uso as variáveis da outra. Não sei se ficou mto claro. Espero que possam me ajudar. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Julho 11, 2009 poste os codigos das classes Loader e Layout, tal como o codigo da página "home" nao sei dizer ao certo pois precisaria ver os códigos para entender melhor o que está fazendo mas talvez uso de herança entre classes possa resolver. Compartilhar este post Link para o post Compartilhar em outros sites
vinicvo 4 Denunciar post Postado Julho 14, 2009 Ok...vou postar os códgos das classes. Esse é o códido da classe que carrega as páginas. class Carrega { public function modelo($modelo) { $arquivo = DIR_APLICATIVO . 'modelo/' . $modelo . '.php'; if (file_exists($arquivo)) { include($arquivo); } else { exit('Erro: Impossível carregar o modelo <b> ' . $modelo . '</b>!'); } } } Agora eu tenho essa página acima chamada em uma página com o include...então eu faço o seguinte: include('carregador.php'); $variavel1 = "Variável 1"; $variavel2 = "Variavel 2"; $variaveln = "Variável n"; $carrega = new Carrega(); $carrega->modelo('comum/layout'); Então...é isso, e não está funcionando. As variáves "Variável1, 2 , n" não estão acessíveis na página "comum/layout.php". Como resolver esse problema? Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 14, 2009 Posta o layout.php... Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
vinicvo 4 Denunciar post Postado Julho 14, 2009 Pessoal, o layout.php é só uma página simples com o echo das outras variáveis. Layout.php <?php echo $variavel1; echo $variavel2; echo $variaveln; ?> Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Julho 15, 2009 não é um método aconselhável, mas, a grosso modo, pode definir uma chamada global: exemplo: <?php $str = 1; class foo { function bar() { global $str; if( $str == 1 ) { echo 'a'; }else{ echo 'b'; } } } foo::bar(); ?> outro modo, é definir uma propriedade dentro da classe exemplo: <?php class foo { public $str; function bar() { if( $this -> str == 1 ) { echo 'a'; }else{ echo 'b'; } } } $tmpl = new foo; $tmpl -> str = 1; $tmpl -> bar(); ?> existem outras N formas de resolver a questão, esses são apenas 2 simples exemplos para você ter uma idéia. Compartilhar este post Link para o post Compartilhar em outros sites
vinicvo 4 Denunciar post Postado Julho 19, 2009 Resolvido...Obrigado pela ajuda pessoal! ^^ Compartilhar este post Link para o post Compartilhar em outros sites