CakePhp: faça apenas com redes de administração do Datafield
-
27-09-2019 - |
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?
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(...);
}