Tratamento de mensagens do banco de dados

Galera, to tentando fazer uma pequena aplicação utilizando Yii, mas cheguei num ponto que to meio perdido no que fazer, e, se possível, gostaria da opinião de vcs.

Tenho um model gerado pelo yiic, com base MySQL, onde no banco está definido uma chave única para um determinado campo.

esta tabela é bem simples. Segue a estrutura dela abaixo.

CREATE TABLE IF NOT EXISTS pessoas (

  id char(32) NOT NULL DEFAULT '',

  nome varchar(50) NOT NULL,

  telefone varchar(20) DEFAULT NULL,

  email varchar(150) DEFAULT NULL,

  PRIMARY KEY (id),

  UNIQUE KEY nome (nome)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Pois bem. Ela tem definido que o campo Nome não pode ser nulo.

Até ai tudo blz, mas na hora que eu vou salvar na tabela, tendo o valor duplicado para testes, o Yii exibe uma página de erro.

Gostaria de tratar esta mensagem de erro, para que o erro seja traduzido e apresentado ao usuário de forma mais amigável.

Pois ai vai as perguntas: :)

1 - Existe algum recurso no framework que me auxilie nesta tarefa? (Realmente já procurei e não encontrei).

2 - Caso não exista, eu iria implementar para a minha aplicação. Mas, para isto, eu precisaria ter um arquivo que faria a conversão do erro do banco de dados para o “português-usuário” :)

Como o trabalho é meio manual, e, eu ainda não conheço bem o framework, será que terá problemas futuros com a convenção do FW se incluir uma nova pasta dentro de protected? Ou mesmo dentro de protected/messages, onde ficaria a minha tabela de tradução de erros?

Vlw a atenção. :)

Seus problemas se acabaram!

Para o tratamento de campos unicos:

  • No model pessoas, altere o método 'rules'.Adicione a seguinte linha ao array:


             array('nome', 'unique')


Para o tratamento de erros:

  • No manual da versão 1.0.6, leia a seção 'Handling Errors Using an Action'

Para apenas traduzir as mensagens de erro:

  • em aplicacao/protected/config/main.php, adicione os valores


'sourceLanguage'=>'pt-br',


'language'=>'pt-br',


Para funcionar direitinho, veja se teu framework possui a pasta yii/framework/views/pt-br. Se nao tiver, crie-a a partir da pasta 'pt' e faça as modificações que achar adequadas.

É isso.

vlw rick … ficou 1000% 

E eu que já iria criar altas paradas pra resolver este problema :)

Quote

- em aplicacao/protected/config/main.php, adicione os valores


'sourceLanguage'=>'pt-br',


'language'=>'pt-br',


Cara, muito bom… deixei pra resolver o problema de tradução pro final do meu site e de repente acho esse comentário e pronto, em 5 segundos o site está completamente traduzido (pras coisas básicas no caso).

Adorei.

Estes pequenos trechos de código poderiam (e deveriam) estar mais destacados no manual, a meu ver.