Debate sobre projeto

Boa noite galera.

Tenho um debate sobre um projeto que estou fazendo.

Basicamente o site terá o admin (back-end) e o front-end só que no front-end vai ser basicamente consulta nem login pra usuário terá a princípio, no máximo comentar post (mas ñ será preciso logar).

Porém no back-end terá o CRUD de tudo, login e senha para os colaboradores etc. A questão é. É uma boa pratica deixar tudo no módulo do ADM inclusive a única consulta que seria do front-end? Ou então no model do front-end, extender o model do back-end e montar a consulta exclusiva dessa parte do site?

Pergunto isso, pra ter o mínimo de código possível e o máximo de aproveitamento.

Pergunto o msm para os Controllers.

[]'s

Cálcio,

Eu prefiro deixar separado, por causas da particulariedades de cada ambiente front-end e back-end.

As vezes você precisa criar scenario para sua Administração que não poderá afetar o front-end.

Sobre os comentários, coloca um captcha e deixa livre a postagem sem liberação de visualização, ai na Administração você libera os comentários, para não ter que fica trabalhando em cima do CUserIdentity.

Essa é minha opnião, as vezes alguem tem uma opinião mais ampla do assunto.

Ñ sei se vou precisar de senários e tb nunca entendi isso direito. rs

Pq o projeto é bem simples.

Oq vou montar no admin até onde consegui vislumbrar ñ vai ser nada de outro mundo são CRUDs básico e com poucos relacionamentos e no caso de notícias integração com redes sociais (esse já vi q vou apanhar e mnt)

É os comentários pensei algo assim msm. Na verdade pensei deixar livre e moderar os que ñ forem adequados.

E no front-end só msm terá consultas e possibilidade de compartilha com rede social.

Caso queiram saber do q se trata o projeto é o novo ite do Hack’n Rio. http://hacknrio.org/, como podem ver o front-end é só consulta a banco.

Concordo com Newerton, separando para poder ter o controle das peculiaridades de cada módulo e desta forma já cogitnado a possibilidade de escalar o seus sistema, mas dai você vai pensar "Mas é simples o meu projeto!", porém este mesmo sistema poderá ser usado por você em algo maior, que tenha uma complexidade maior, porém, Cálcio, se o seu prazo estiver curto então faz da maneira que você não irá se complicar.

Tenho outra questão que é sobre internacionalização.

Msm ainda ñ tendo entendido quase nada sobre como o Yii faz isso, quero deixar meu sistema planejado para suportar internacionalização. Minha dúvida é sobre o banco de dados. Qual a forma + prática de fazer isso?

Em cada tabela criar um id para idioma e repetir N vezes os dados? Ex.:

na tabela gravar

id: 1, idIdioma: 1, nome: Cálcio, descricao: Descrição em português

id: 2, idIdioma: 2, nome: Cálcio, descricao: Descrição em ingles

id: 3, idIdioma: 3, nome: Cálcio, descricao: Descrição em espanhol

id: 4, idIdioma: 1, nome: Erika, descricao: Descrição em português

id: 5, idIdioma: 2, nome: Erika, descricao: Descrição em ingles

id: 6, idIdioma: 3, nome: Erika, descricao: Descrição em espanhol

Ou um registro tendo os 3 idiomas?

id: 1, nome: Cálcio, descricao: Descrição em português, Descrição em ingles, Descrição em espanhol

id: 2, nome: Erika, descricao: Descrição em português, Descrição em ingles, Descrição em espanhol

Imagino que seria + prático a primeira opção e na hora de fazer isso pelo Yii tb seja + tranquilo. Estou certo?

Cálcio,

Isso mesmo, cria uma tabela com as linguagens, e depois nas tabelas que deseja tradução, coloca o id_linguagem, ai cada item terá sua linguagem e descrição, fica até mais organizado, antes eu fazia tudo na mesma tupla.

E ruim que sempre você busca toda informação mesmo EN ou ES só para mostrar BR, ai separando, você só busca todos BR por SESSION.

Então nesse caso para manter integridade dos dados, seria preciso cria uma tabela chamada idiomas e criar 3 itens

idIdioma | Idioma

1 | pt

2 | en

3 | es

E ir criando FKs nas demais tabelas.Estava pensando tb em criar constantes para os idiomas e usar nos testes com a session por exemplo e o idioma padrão seria pt. Onde poderia criar essas constantes (estou pesquisando isso)?

Só ainda ñ visualizei exatamente em que parte do código faria isso, se é em cada Controller ou em cada Model, ou se tem alguma forma de passar isso dinamicamente para o main.php (oq acho q seria o mais certo).

Cálcio,

Você defini a linguagem padrão no config/main.php

Ai as demais você trabalha com cookie ou sessão.

Por sessão tenho um modelo que postei pra você no outro post.

Rêf.: http://www.yiiframework.com/forum/index.php/topic/29813-site-multi-lingua/page__view__findpost__p__143661

Meu main já está configurado assim.


return array(

	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',

	'language' => 'pt_br',

	'sourceLanguage' => 'pt_br',

	'timeZone' => 'America/Sao_Paulo',

OQ eu quis dizer é que acho + correto é esses parâmetros de language serem dinâmicos, mas ñ sei se é possível.

Ex:


return array(

	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',

	'language' => $_SESSEION['br'] , //ou algo vindo de ajax

	'sourceLanguage' => $_SESSEION['br'],//ou algo vindo de ajax

	'timeZone' => 'America/Sao_Paulo',

Sacou?

Mais o que eu expliquei é dinâmico, mais você não precisa setar eles no config/main.php.

No componente/Controller.php você cria o init(), se já tiver criado incluia os as condicionais abaixo.




public function init(){


       if (isset($_GET['linguagem']) && !empty($_GET['linguagem'])) {

            Yii::app()->language = $_GET['linguagem'];

            Yii::app()->session['_linguagem'] = Yii::app()->language;

        } else if (isset(Yii::app()->session['_linguagem']) && !empty(Yii::app()->session['_linguagem'])) {

            Yii::app()->language = Yii::app()->session['_linguagem'];

        } else {

            Yii::app()->session['_linguagem'] = Yii::app()->language;

        }


}



Observa bem, que qualquer link que você cruar com ?linguagem=pt_br ou ?linguagem=es / en, o Yii::app()->language vai receber o parametro $_GET ou $_SESSION

Ai em qualquer parte da sua aplicação você resgata a linguagem com Yii::app()->language ou Yii::app()->session[’_linguagem’].

Ta simples o funcionamento.