Jump to content
Sign in to follow this  
gambas

Passar variáveis em estilo CodeIgniter

Recommended Posts

gambas

Boas malta!

Estou a construir um pequeno framework e queria poder carregar parte de uma página passando-lhe um array associativo e na pagina aceder a essas variaveis apenas pelo nome da chave no array, um pouco ao estilo do CodeIgniter.

numa pagina teria o seguinte:

<?php 
$data['title'] = 'Título da página';
print_page('template.php', $data);
?>

no template.php:

<?php
echo $title;
?>

Já procurei e não me consegui safar... Alguem tem alguma ideia de como fazer?

Share this post


Link to post
Share on other sites
isapinhal

Boas,

Nao é isto que pretendes?

Numa pagina:

<?php 

$titulo = 'Título da pagina'; ?>
<meta http-equiv="refresh" content="4;URL=template.php?data=<? echo $titulo ?>" />

no template.php:

<?
$title = htmlentities(addslashes($_GET['data']));
echo $title;
?>

Se for isto tens outras opçoes mais simples mas com o mesmo objectivo.

Espero ter ajudado...

Cumpz

IsaPinhal

Share this post


Link to post
Share on other sites
Knitter

Tens de ser tu a fazer a conversão, podes fazer isso de várias maneiras mas uma possível será a utilização de variáveis variáveis, ou lá como se chamam.  Podes ver mais no manual do PHP http://php.net/manual/en/language.variables.variable.php

Terás de percorrer o vector e transformar cada chave numa variável antes de incluires o ficheiro do template, assim o código dentro do template terá acesso a variáveis com esse nome.

Mas a melhor maneira é mesmo ires ver o código do CI, já que tens acesso a ele e podes ver como é feito.

Share this post


Link to post
Share on other sites
gambas

já consegui fazer através de variáveis variáveis...

function print_page($page, $vars)
{
	if(!is_array($vars)) return;

	include(TEMPLATES_FOLDER.DS.$page.EXT);

	foreach($vars as $key=>$value)
	{
		$$key = $value;
	}
}

O problema é que agora não consigo atribuir ás variaveis no scope para global, para poder aceder em qualquer pagina.

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Pois não, porque está a criar variáveis locais. Isto é, as variáveis criadas dentro das funções não são acessíveis fora delas.

Se estiveres a utilizar classes, deves ter um array gobal e depois nessa função adicionar as variáveis variáveis ao array. Caso contrário o que podes fazer é em vez de variáveis variáveis, crias um array cuja chave será o nome da variável e o valor, o valor da variável e depois retornas como resultado esse array.

Por exemplo

foreach( $vars as $key => $value ) {

    $array[$$key] = $value;

}

return $array;

Útil: http://www.php.net/manual/en/language.variables.scope.php

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.