Pergunta

Recentemente, comecei a reescrever um projeto que fiz há alguns anos atrás usando o CakePHP. Estou tentando fazer tudo 'certo' desta vez, então talvez alguém me dê um ponteiro de fazer com o seguinte:

Estou mostrando uma tabela simples de uma tabela usando o Model-> Find ('All') na visualização. Existem dois campos booleanos nesta tabela, que juntos compõem algo que preciso mostrar a um usuário. Então: 0x0 = 'a', 1x0 = 'b', 0x1 = 'c', 1x1 = 'd'. Onde devo colocar essa lógica? Eu tenho pensado nos seguintes métodos:

  1. A vista
  2. Um ajudante de vista
  3. O controlador
  4. Algo no modelo para que o Model-> Find ('All') produz esse valor (isso é possível?)

Essa tarefa pode parecer trivial, mas acho que pode me aprender a organizar esse projeto e sustentável desde o início.

Obrigado!

Foi útil?

Solução

Bem, depende do tipo de lógica para compensar a tabela final (é apresentação ou negócio?).

Imagine que você adiciona um novo tipo de interface do usuário, por exemplo, interface da linha de comando. Como você mostraria sua mesa lá? Os dados aprovados para exibir devem ser os mesmos para apresentações de HTML e console. Portanto, a lógica responsável por preparar esses dados - é a lógica de negócios e deve ser colocada no modelo. A lógica responsável por exibir os dados deve ser colocada em vista (talvez em vista ajudante, se for usado mais de uma vez).

E nunca coloque esse tipo de lógica no controlador.

Outras dicas

Se for algo que você usará em todo o lugar, eu o colocaria no modelo. Você pode colocar um método no modelo que devolve esse valor ou loop sobre todas as linhas que você recuperou em um depois de encontrar retorno de chamada e defina -o como um campo adequado.

Coloquei esse tipo de lógica na visão, se for algo que determinará o estilo de renderização. Dessa forma, o designer tem acesso máximo e pode estilizar de acordo.

Por outro lado, se as duas colunas existirem apenas por conveniência em datamodelling, coloque -o no modelo. O designer nem deveria estar ciente de outras possibilidades!

No controlador! Os métodos do modelo vem no controlador. A visualização é apenas para saída (como a programação HTML UI.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top