我正在用cakephp制作一个应用3.我的用户有2个角色,管理员和学生。管理员可以看到所有内容,学生只能看到并编辑他的个人资料。角色是数据库中用户表中的字段。cakephp 3根据用户角色显示html
admin的ctp文件有很多链接可以做不同的动作,比如添加一个新的产品或者删除一个用户,我想要做的就是显示这个链接到管理员角色,但是使用相同的ctp文件学生和管理员。我不知道如何做到这一点,如果有人可以给我一个例子,请。
例如这是用户add.ctp文件:
<div class="actions columns large-2 medium-3">
<h3><?= __('Actions') ?></h3>
THIS ARE THE LINKS
<ul class="side-nav">
<li><?= $this->Html->link(__('List Users'), ['action' => 'index']) ?></li>
<li><?= $this->Html->link(__('New Clase'), ['controller' => 'Clases', 'action' => 'add']) ?></li>
<li><?= $this->Html->link(__('List Convenios Usuarios'), ['controller' => 'ConveniosUsuarios', 'action' => 'index']) ?></li>
<li><?= $this->Html->link(__('New Convenios Usuario'), ['controller' => 'ConveniosUsuarios', 'action' => 'add']) ?></li>
<li><?= $this->Html->link(__('List Desvinculaciones'), ['controller' => 'Desvinculaciones', 'action' => 'index']) ?></li>
<li><?= $this->Html->link(__('New Desvinculacione'), ['controller' => 'Desvinculaciones', 'action' => 'add']) ?></li>
<li><?= $this->Html->link(__('List Historial Alumnos'), ['controller' => 'HistorialAlumnos', 'action' => 'index']) ?></li>
<li><?= $this->Html->link(__('New Historial Alumno'), ['controller' => 'HistorialAlumnos', 'action' => 'add']) ?></li>
<li><?= $this->Html->link(__('List Pagos'), ['controller' => 'Pagos', 'action' => 'index']) ?></li>
<li><?= $this->Html->link(__('New Pago'), ['controller' => 'Pagos', 'action' => 'add']) ?></li>
<li><?= $this->Html->link(__('List Pedidos'), ['controller' => 'Pedidos', 'action' => 'index']) ?></li>
<li><?= $this->Html->link(__('New Pedido'), ['controller' => 'Pedidos', 'action' => 'add']) ?></li>
</ul>
<div class="users form large-10 medium-9 columns">
<?= $this->Form->create($user) ?>
<fieldset>
<legend><?= __('Agrega Nuevo Usuario') ?></legend>
<?php
echo $this->Form->input('nombre', ['label'=>'Nombre Completo']);
echo $this->Form->input('fecha_nac',['label'=>'Fecha de Nacimiento']);
echo $this->Form->input('username',['label'=>'Nombre de Usuario']);
echo $this->Form->input('email');
echo $this->Form->input('password', ['label'=>'Contraseña']);
echo $this->Form->input('telefono');
echo $this->Form->input('rol', ['options' =>['Alumno'=>'Alumno', 'Monitor'=>'Monitor','Instructor'=>'Instructor']]);
echo $this->Form->input('fecha_ing',['label'=>'Fecha de Ingreso']);
echo $this->Form->input('profesion');
echo $this->Form->input('grado_id', ['options' => $grados]);
echo $this->Form->input('referencia');
echo $this->Form->input('estado', ['options' =>['Activo','Inactivo']]);
echo $this->Form->input('fecha_ult_acenso', ['label'=>'Fecha último ascenso','empty' => true, 'default' => '']);
echo $this->Form->input('nombre_apoderado', ['empty' => true, 'default' => 'No tiene Apoderado']);
echo $this->Form->input('telefono_apoderado', ['empty' => true, 'default' => '']);
echo $this->Form->input('nota_salud',['label'=>'Información de Salud', 'empty' => true, 'default' => 'No presenta Complicaciones']);
echo $this->Form->input('llevar_a', ['label'=>'En caso de Emergencia', 'empty' => true, 'default' => '']);
echo $this->Form->input('monto_paga',['label'=>'Mensualidad']);
echo $this->Form->input('id_user_referencia', ['label'=>'Quien Paga']);
echo $this->Form->input('observaciones', ['empty' => true, 'default' => 'No tiene observaciones']);
echo $this->Form->input('fecha_cambio_password', ['empty' => true, 'default' => '']);
echo $this->Form->file('foto');
?>
</fieldset>
<?= $this->Form->button(__('Agregar')) ?>
<?= $this->Form->end() ?>
我的第一个想法是使用,如果在CTP文件,并有联系,并显示一个或两个其他列表根据用户的角色,但我不知道是否有更好的形式来做到这一点,使用cakephp的工具。
您有两种情况,并且(假设)是用户表中的一个字段,表示给定用户的角色 - 测试您的身份验证逻辑,并在模板文件中输出一个链接列表或另一个链接列表。如果到目前为止你什么都没做,这个问题太广泛了,无法回答。 – AD7six
我编辑的问题,像例子 –