Pergunta

No meu modelo de dados, tenho um campo que deve ser apenas com editável. Os usuários normais podem editar registros no modelo e visualizar esse campo específico, mas não devem ser capazes de editá -lo. Existe uma abordagem simples/limpa para fazer isso? Eu acho que é necessário criar uma ação extra do controlador de admin_edit, mas qual é a melhor maneira de "bloquear" um campo de dados no controlador?

Foi útil?

Solução

Não é necessário criar uma nova ação do controlador, mas você pode decidir isso. Observe que você ainda pode usar a mesma visão usando $this->render("edit") Vejo: http://book.cakephp.org/view/428/render

Eu acho que você deveria:

  • Use a mesma ação do controlador, se isso não for confuso para os usuários e administradores
  • Exiba um campo de entrada apenas se o usuário for administrador e produza o texto para outros usuários
  • Verifique a autorização no controlador

Outras dicas

Dependendo da sua configuração, isso pode ser facilmente tratado como um método de validação no modelo. Escreva uma função personalizada no modelo para verificar se o usuário tem permissão.

Você também pode fazer isso no modelo com beforesave (). Se o campo estiver lá e eles não tiverem permissão, remova -o.

Você pode verificar simly na função de administrador na visualização de edição

if (hasRoleAdmin) {
 echo $this->Form->input(...);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top