Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jribeirojr

CodeIgniter - Qual a melhor estrutura?

Recommended Posts

Pessoal,

 

Estou desenvolvendo um projeto em CodeIgniter e, após alguns controller e views criadas me deparei com uma situação me deixou desconfortável. O projeto que estou montando possui uma área administrativa para conteúdo, onde apenas usuários logados podem acessar, a fim de trocar o conteúdo do site, devido a isso minhas estrutura do controller e view ficou da seguinte maneira

 

/controller/admin/ -> todos os controller relacionados a área administrativa

/controller/ -> todos os controllers relacionados ao site

 

Mas como disse no inicio, algo me incomodou, porque vejam como ficaria a estrutura para uma página de formulário de contatos do site e outra que lista todos os contatos relacionados

 

/controller/admin/contato_site --> controller que chama a view e os models para poder listar os contatos relacionados e outras funções, página restrita

 

/controller/contato --> controller que chama a view de contato do site onde o usuário preenche os dados de contato

 

/model/contato --> todos os acessos a banco necessários

 

/view/admin/contato_site --> view que mostra a página HTML de contato do site

 

/view/contato --> view que mostra a página de contato para o site, página pública

 

O que me incomodou foi que tenho dois controllers com o "mesmo nome" que trabalham para uma mesma área do site, a diferença é que um só pode ser acessado pela área restrita e outro pela área pública, e o segundo está dentro da estrutura ADMIN, que neste caso não é um controle mas apenas um diretório dentro da pasta controller.

 

Gostaria de saber a opinião de vocês com relação a esta estrutura, visto que por padrão o cliente quer que qualquer ação relacionada a troca de conteúdo este em uma URL do tipo www.dominio.com.br/admin.

 

Vocês acham que apesar de repetir os nomes esta estrutura é ideal ou sugeririam outra forma de fazer para poder chegar no resultado esperado?

 

Pensei em criar um controller chamada ADMIN e nele ter todas as ações e chamadas para cada uma das páginas, o problema é que este controller irá ficar GIGANTE, porque eu posso ter 01 até N conteúdos de páginas diferentes para serem administrados

 

Se alguém puder opinar a respeito agradeceria

 

Abs

 

Jorge

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se seu cliente acha que fica mais amigável usar a subpasta "admin", não há problemas em duplicar nome de controllers. Se precisar simplificar as urls, dá para usar routes. Só deixe bem documentado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas por que jovem?

 

Dentro do mesmo controle você pode criar 2 métodos e no construct do controle você pode fazer uma validação de qual method foi chamado e redirecionar, se for uma area que precisa de permissão você coloca a validação antes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que ele quer obrigatoriamente colocar dentro da url o "admin". Por isso eu sugeri que mantivesse colocando os controllers na subpasta, já que ele informou que não quer ter controllers enxertados de métodos. Para fins de organização, eu acho melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

URI Routing

Typically there is a one-to-one relationship between a URL string and its corresponding controller class/method. The segments in a URI normally follow this pattern:

example.com/class/function/id/

In some instances, however, you may want to remap this relationship so that a different class/function can be called instead of the one corresponding to the URL.

For example, lets say you want your URLs to have this prototype:

example.com/product/1/

example.com/product/2/

example.com/product/3/

example.com/product/4/

Normally the second segment of the URL is reserved for the function name, but in the example above it instead has a product ID. To overcome this, CodeIgniter allows you to remap the URI handler

https://ellislab.com/codeigniter/user-guide/general/routing.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sinto um ar de provocação. Não vou ficar discutindo sobre isso, já que não está agregando nada ao conteúdo e o interessado não se manifestou sobre nossas respostas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você se sentiu ofendido me desculpe, não foi a intenção.

 

Simplesmente o manual é bem claro e deixa bem claro a possibilidade da url variar de acordo com parâmetros dos métodos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Agradeço muito a colaboração de todos e desculpe não ter me manifestado antes, estava em viagem.

 

Já pensei em utilizar o HMVC, mas como este é um projeto que já está em andamento eu teria que alterar bastante coisa, mas em todas as pesquisas que fiz achei uma das melhores opções mesmo.

 

O problema que enxerguei em ficar duplicando, vamos dizer assim, os controllers, é o fato de que se eu tiver que mudar algo terei que mudar em dois controllers e não apenas em um único, isso que me deixou um pouco preocupado.

 

Documentamos bem o código, mas sabe que as vezes algumas coisas podem passar e com isso prejudicar o bom andamento do projeto, mas faz parte.

 

Acho que no próximo projeto vou tentar utilizar o conceito do HMVC, para ver como ficaria a estrutura e se resolveria esta questão.

 

Muito obrigado a todos pela ajuda

 

Bom final de semana

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites
O problema que enxerguei em ficar duplicando, vamos dizer assim, os controllers, é o fato de que se eu tiver que mudar algo terei que mudar em dois controllers e não apenas em um único, isso que me deixou um pouco preocupado.

Eu te dei a solução, basta você ler o que eu digo e aplicar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.