A função get_sconfig e feita por mim. Mas esse não e mais o problema, agora a única pendência e a q relatei por ultimo ou seja, não consigo acessar a session via lib sessio s dentro da classe MY_loader. Preciso saber se há alguma outra forma de alterar dinamicamente o caminho da pasta views sem ser extendendo a classe CI_Loader. Ou mesmo se há uma forma de acessar os objetos de session do CI na classe MY_Loader?
Alguma sugestao? Enviado via iPhone Em 27/02/2011, às 11:35, Vinicius Cruz <[email protected]> escreveu: > Onde está o código da função get_sconfig? Em uma library, helper, plugin? > > Se for o caso, precisa do super objeto do framework da seguinte forma: > > $CI =& get_instance(); > $resp = $CI->session->userdata($conf); > > Veja mais em Utilizing CodeIgniter Resources within Your Library > http://codeigniter.com/user_guide/general/creating_libraries.html > > Att, > Vinicius Cruz > 71 8821-8799 > http://www.zime.com.br/ > > > > Em 27 de fevereiro de 2011 05:32, Pablo Augusto <[email protected]> > escreveu: > > Eu dei uma estudada mais aprofundada no CI e a classe Loader e a que > instancia todas as outras por isso nao funciona > pois ate as sessions nao estao instanciadas ainda. Ou seja, estou tentando > acessar algo que ainda nao foi declarado ou instanciado, > e ai que estava o problema. > > Vou ter de estudar mais para ver se e possivel implementar isso, pois > infelizmente, apenas nessa classe e possivale alterar > o diretorio das views para criar uma infra estrutura de templates /views para > /templattes/template1 etc. > > A coisa e mais da estrutura do CodeIgniter do que de orientacao a objeto > alguem tem alguma > ideia de como contornar essa situacao. > > minha necessidade e verificar no __construct() da classe MY_Load > se existe um valor definido para a variavel de sessao 'language' para carregar > as views traduzidas no idioma que esta na session. > > Via config.php ele funciona, mas como nao consigo instanciar a classe > sessions na MY_Loader > ele sempre retorna vazio usando $_SESSION['language']. > > > E infelizmente, pelo que vi essa e a unica forma de alterar a localizacao e > nome do diretorio de views > alterando a variavel $this->_ci_view_path = 'caminho/path/views'; no > construct da classe MY_Loader > correto? Ou ha outra forma? > > > Abcs. > > ----------------------------------------------------------------------------------- > > A titulo de curiosidade segue a funcao final que ficou dentro da classe > MY_Loader > Eu consigo acessar normalmente a session, mas como ela e instanciada antes da > classe de > sessions do CodeIgniter, ela acaba sendo uma sessao diferente. > > Vou tentar pegar os parametros de config da session no arquivo de > configuracao e iniciar a sessao com eles para > ver se funciona. > > public function get_config_value($conf = '') > { > > //Se nao foi definido o valor a ser localizado > if ($conf == '' ) return FALSE; > > //Verifica a configuracao esta setada via sessions > if ( isset($_SESSION[$conf])){ > return $_SESSION[$conf]; > } > > //verifica se esta setado via config.php > else { > $config =& get_config(); > if (isset( $config[$conf])) > return $config[$conf]; > > else return FALSE; //se nao achou nenhum valor retorna > false > } > > > > > Pablo Augusto > SEO | SEM | Marketing Digital > > Me siga no Twitter: @pabloaugusto > Artigos sobre Otimização de sites, Marteking Digital e Mídias Sociais: WebTags > MSN: [email protected] > SKYPE: [email protected] > EMAIL: [email protected] > > > > > > > 2011/2/27 [email protected] <[email protected]> > > Pablo, > > Esse erro ocorre quando vc faz uma chamada $this fora do contexto de uma > classe ou numa chamada estática ao método. No seu caso está ocorrendo a > primeira hipótese, ou seja, sua função não está definida no escopo de uma > classe. > > A solução para isso é simples. Você deve inserir o objeto $session no escopo > da função usando o globals ou passa-lo como parâmetro. E, evidentemente, > retirar o $this da jogada. > > Assim: > function get_sconfig($conf = '') > { > global $session; > > ... > > //Verifica a configuracao esta setada via sessions > $resp = $session->userdata($conf); > > ... > > ou assim: > function get_sconfig($conf = '', $session) > { > ... > > //Verifica a configuracao esta setada via sessions > $resp = $session->userdata($conf); > > ... > > Abraço, > > -- > Iuri Jacob > Engenheiro de Software > IMPA - Instituto de Matemática Pura e Aplicada > http://www.iurijacob.com.br/ > http://br.linkedin.com/in/iurijacob > http://twitter.com/#!/iurijacob > > Tecnologia no Século XXI > http://www.bytecodex.com/blog/ > > > Em 26 de fevereiro de 2011 20:50, Pablo Augusto <[email protected]> > escreveu: > Boa noite pessoal, veja se alguem tem uma ideia de como resolver esse > problema. > > Estou fazendo uma funcao para o Code Igniter 2 para checar se um valor de > configuracao > esta definido via sessions e via config.php. > > Quanto vou checar se o valor passado por parametro na chamada da funcao esta > disponivel > na session o seguinte erro ocorre: > > Fatal error: Using $this when not in object context in > D:\xampp\htdocs\XXXXXXX\application\core\MY_Loader.php on line 34 > > A linha 34 e justamente essa, aonde eu pego o valor do parametro $conf e > tento recuperar o valor que esta na session: > $resp = $this->session->userdata($conf); > > A chamada da funcao esta sendo feita da seguinte forma > $view_path = get_sconfig('view_path'); > > > Qual seria o problema, o this nao esta instanciado ainda na chamada do > MY_loader? > Como poderia fazer essa funcao para checar se a variavel esta na session ou > no config file entao? > > Abcs > -------------------------------------------------------------------------------------------- > Segue abaixo a funcao completa para elucidar todo cenário. > > function get_sconfig($conf = '') > { > //Se nao foi definido o valor a ser localizado > if ($conf == '' ) return FALSE; > > //Verifica a configuracao esta setada via sessions > $resp = $this->session->userdata($conf); > $resp = (! isset($resp)) ? '' : $resp; > > //Se nao esta setada via sessions verifica se esta setado via > config.php > if ($resp == '') > { > $resp = $config[$conf]; > $resp = (! isset($resp)) ? '' : $resp; > } > > //Se conseguiu localizar um valor definido para a > configuracao retorna ele > //senao retorna false > if ($resp == '') return FALSE; > else return $resp; > } > > > > > Pablo Augusto > SEO | SEM | Marketing Digital > > Me siga no Twitter: @pabloaugusto > Artigos sobre Otimização de sites, Marteking Digital e Mídias Sociais: WebTags > MSN: [email protected] > SKYPE: [email protected] > EMAIL: [email protected] > > > > > -- > http://www.phprio.org/ > Pedidos de Camisetas: http://sites.google.com/a/phprio.org/index/camisetas > Pedidos de Elephpants: http://sites.google.com/a/phprio.org/index/elephant > > > -- > http://www.phprio.org/ > Pedidos de Camisetas: http://sites.google.com/a/phprio.org/index/camisetas > Pedidos de Elephpants: http://sites.google.com/a/phprio.org/index/elephant > > > > _______________________________________________ > [email protected] > http://www.codeigniter.com.br > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br > > --------------------------- > Oportunidade de negócio > http://www.franquiasargohost.net > --------------------------- > > > _______________________________________________ > [email protected] > http://www.codeigniter.com.br > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br > > --------------------------- > Oportunidade de negócio > http://www.franquiasargohost.net > ---------------------------
_______________________________________________ [email protected] http://www.codeigniter.com.br http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br --------------------------- Oportunidade de negócio http://www.franquiasargohost.net ---------------------------

