Como ocultar parte do formulário HTML dependendo da function do usuário

Estou desenvolvendo um site usando o Kohana 3.3 e quero exibir seletivamente elementos de UI de HTML, dependendo do papel do usuário. e: – Se o usuário é um administrador, mostre o hiperlink “editar” e, quando o administrador clicar no botão de edição, mude a checkbox de texto de “lêmente” para “normal”.

Se o usuário é um usuário normal registrado, habilite o botão para “fazer uma pergunta”.

Se o usuário é um visitante, ele não tem privilégios.

Agora estou usando um único arquivo de exibição e alterando a visibilidade depois de verificar o status das variables ​​php. De alguma forma, eu sinto que não estou fazendo isso corretamente, qual é o método sugerido para lidar com tais cenários (todos os plugins?)?

Ok, então você quer distinguir três casos diferentes

  • Visitante
  • admin
  • do utilizador

O local para lidar com isso, é o seu controlador. Auth::instance()->get_user() você tem access a Auth::instance()->get_user() .

 $user = Auth::instance()->get_user(); if ($user === null) { //visitor } else { if ($user->has('roles', ORM::factory('Role', array('name' => 'admin')))) { //admin } else { //user } } 

Agora que você sabe como lidar com os casos, você de alguma forma precisa dizer sua opinião. Para fazer isso, você pode criar uma nova variável na qual você carrega uma das três vistas – uma para cada caso.

 $specificViewName = ""; $user = Auth::instance()->get_user(); if ($user === null) { $specificViewName = "visitor"; } else { if ($user->has('roles', ORM::factory('Role', array('name' => 'admin')))) { $specificViewName = "admin"; } else { $specificViewName = "user"; } } $specificView = View::factory("index/".$specificViewName); 

Se você estiver em um Controller_Template , agora você pode usar $this->template->set("specificView", $specificView); .

Neste caso, você teria um modelo de índice como este

  

Welcome to my website

< ?php print $specificView; ?>

E índice / visitante

 Nothing special for you here 

índice / usuário

 

índice / administrador

 hyperlink