Olhando pro meu caso eu posso dizer que não tem diretamente a ver com o
nome, pois eu tenho na minha core o seguinte:

MY_Controller.php (class MY_Controller extends CI_Controller{})
Site.php (class Site extends MY_Controller{})
Sistema.php (class Sistema extends MY_Controller{})

Pelo que entendi desse __autoload ele adiciona tudo que não tenha o prefixo
CI_, só não depurei pra ter certeza do contexto em que ele se aplica então
não sei dizer ao certo se ele faz isso somente pra pasta core ou para todas
pastas do CI (por ex.: pra helpers ou libraries).

E falando nisso uma coisa me intrigou no teu código, o que seria o
grud_helper?
Pergunto isso pq se for uma classe poderia ser usada como library e
carregada usando $this->load->library() e vc colocou "helper" no nome então
pode ter confundido os conceitos.

Em 1 de março de 2012 10:57, Nino Baldo <[email protected]> escreveu:

> Muito obrigado pessoal, funcionou muito bem!
>
> Só tive que colocar o meu MY_Controller no application/core e adicionar
> essa função no config.php:
>
> *function __autoload($class) {
>    if (strpos($class, 'CI_') !== 0) {
>        @include_once( APPPATH . 'core/' . $class . EXT );
>    }
> }
> *
> Exatamente como explica o site passado:
>
> http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY
>
> Tudo funcionou, mas surgiu uma duvida. Se minha classe tem o nome
> MY_Controller, pq o autoload funciona com CI_? Sou novo em php então isso
> me soou meio estranho.
>
> Att,
>
> *Álvaro Vilobaldo Rios da Silva*
>
> mail to: [email protected] <[email protected]>
> *Analyst Programmer*
>
> *São Paulo and Region, Brazil*
>
>
>
>
> Em 1 de março de 2012 10:09, Jairo <[email protected]> escreveu:
>
> > Valeu Álvaro,
> >
> > Seguinte, coloquei a minha em /application/core/MY_Controller.php .
> >
> > class MY_Controller extends CI_Controller {
> > }
> >
> > Atente para o nome MY_Controller ( o case, o underscore ) no arquivo e
> > no nome da classe, parece que tem que seguir o padrão. Acho que faltou
> > um "underscore" aí.
> >
> > --
> > Abs,
> >
> > Jairo
> > Sao Paulo / SP - Brasil
> >
> >
> > On Thu, 2012-03-01 at 09:45 -0300, Nino Baldo wrote:
> > > Muito obrigados amigos, esse foi o meu primeiro post e não esperava ter
> > > recebido uma tão calorosa recepção.
> > >
> > > Já tinha analisado essa solução do My_controller nos post antigos do
> > grupo
> > > e se não me engano foi o próprio Nando que postou.
> > >
> > > Achei que seria melhor fazer tudo pelo hook, pois programava em java e
> > nele
> > > tem os Filter que funcionam mais ou menos como um hook, mas de forma
> > > melhorada. Contudo vocês me convenceram! Vou usar um Controller
> próprio.
> > >
> > > Fiz dessa forma:
> > >
> > > // CONTROLE PROPRIO
> > > *class MyController extends CI_Controller {
> > >
> > >      function __construct() {
> > >         parent::__construct();
> > >
> > >         validador();
> > >     }
> > >
> > >     function validador(){
> > >
> > >     }
> > > }    *
> > >
> > > // IMPLEMENTAÇÃO
> > >
> > > *class Usuario extends MyController {
> > >
> > >     function __construct() {
> > >         parent::__construct();
> > >         $this->grud_helper = new Grud_helper("usuario");
> > >     }
> > > }*
> > >
> > > Mas ele não carrega automaticamente esse controller e retorna esse
> erro:
> > > Fatal error: Class 'MyController' not found in
> > > C:\wamp\www\CodeIgniter\application\controllers\usuario.php on line 3
> > >
> > > Para carregar automaticamente o meu controller como faço? Coloco ele no
> > > autoload.php como library?
> > >
> > > Att,
> > >
> > > *Álvaro Vilobaldo Rios da Silva*
> > >
> > > mail to: [email protected] <[email protected]>
> > > *Analyst Programmer*
> > >
> > > *São Paulo and Region, Brazil*
> > >
> > >
> > >
> > >
> > > Em 28 de fevereiro de 2012 17:06, Rafael V. de Oliveira <
> > > [email protected]> escreveu:
> > >
> > > > Muito boa a tua solução (Y).
> > > >
> > > > A respeito do $this->uri->uri_string(), bem lembrado Nando, porém
> > depende
> > > > do caso. Até onde eu me lembro, a função não retorna o base_url.
> > > > Mas não estou falando com certeza, minha cabeça dói e vou vazar
> daqui.
> > > >
> > > > Abraços ;)
> > > >
> > > > Em 28/02/2012, às 19:35, Nando Araujo escreveu:
> > > >
> > > > > Opa, muito bem explicado Rafael, é exatamente assim que eu fiz
> > também. :)
> > > > >
> > > > > Só uma dica: a "$pagina_atual   = base_url() .
> > $this->uri->uri_string();"
> > > > > pode usar diretamente a função "uri_string()"!
> > > > >
> > > > > Gostei do jeito que vc verifica o loop infinito; eu fiz assim:
> > > > > http://pastebin.com/nxziwS0u
> > > > >
> > > > > Em 28 de fevereiro de 2012 16:15, Rafael V. de Oliveira <
> > > > > [email protected]> escreveu:
> > > > >
> > > > >> Existem diversas formas, como hooks (o teu problema é quase certo
> a
> > > > falta
> > > > >> de carregar o helper), pelo construtor da classe, etc…
> > > > >>
> > > > >> A solução mais elegante que encontrei foi essa:
> > > > >>
> > > >
> >
> http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY
> > > > >>
> > > > >> Resumindo em miúdos, ao invés de todos os controllers herdarem o
> > > > >> MY_Controller, eles podem ou herdar o Admin_controller ou
> > > > Public_controller
> > > > >> (ambos os nomes podem ser alterados). E estas duas classes (podem
> > ser
> > > > mais)
> > > > >> herdam o MY_Controller.
> > > > >>
> > > > >> No Admin_controller eu coloquei assim (no constructor):
> > > > >>
> > > > >> //Páginas que não necessitam estar logado
> > > > >> $paginas_login  = array('admin/login', 'admin/logout');
> > > > >> //Dê uma olhada no user_guide
> > > > >> $pagina_atual   = base_url() . $this->uri->uri_string();
> > > > >>
> > > > >> //Evita o loop eterno
> > > > >> if ( ! in_array($pagina_atual, $paginas_login) )
> > > > >> {
> > > > >>       if ( ! $this->session->userdata('login_id') )
> > > > >>       {
> > > > >>               //Atenção ao $paginas_login
> > > > >>               redirect('admin/login');
> > > > >>       }
> > > > >> }
> > > > >>
> > > > >> É por isso que quando vejo o pessoal reclamando que o CI não tem
> > > > controle
> > > > >> de acesso, eu dou risada. É tão simples implementar que a melhor
> > opção é
> > > > >> deixar a critério do desenvolvedor.
> > > > >>
> > > > >> É só prestar atenção a nome de sessions e o que está no autoload
> ou
> > não.
> > > > >> Como o helper url eu utilizo quase sempre, ele está no autoload.
> > > > >>
> > > > >> Em 28/02/2012, às 16:51, Nino Baldo escreveu:
> > > > >>
> > > > >>> Ola pessoal,
> > > > >>>
> > > > >>> Gostaria de saber como validar se o usuário está logado ou não em
> > todas
> > > > >> as
> > > > >>> telas e caso não esteja direcionar para o controller de login?
> > > > >>>
> > > > >>> Até agora já fiz um hook de "pre_controller", mas não consigo
> > > > >> redirecionar,
> > > > >>> pois quando uso o "redirect('pagina')" ele me exibe esse erro:
> > Fatal
> > > > >> error:
> > > > >>> Call to undefined function redirect()
> > > > >>>
> > > > >>>
> > > > >>> Att,
> > > > >>>
> > > > >>> *Álvaro Vilobaldo Rios da Silva*
> > > > >>>
> > > > >>> mail to: [email protected] <[email protected]>
> > > > >>> *Analyst Programmer*
> > > > >>>
> > > > >>> *São Paulo and Region, Brazil*
> > > > >>> _______________________________________________
> > > > >>> [email protected]
> > > > >>> http://www.codeigniter.com.br
> > > > >>>
> > > >
> > http://mail.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://mail.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://mail.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://mail.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://mail.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://mail.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://mail.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://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a