Herramientas de usuario

Herramientas del sitio


cursos:yii:controllers

Controladores

Definir el layout

Por defecto será column2, que muestra una columna en la derecha con el menú de acciones. Se puede cambiar por otro, que ha de estar en views/layouts

public $layout='//layouts/milayout';

Si se desea cambiar para una acción en particular y no para el resto, antes de hacer el render dentro de ésta, asignaremos el valor $this→layout:

$this->layout='//layouts/milayout2';
$this->render(.....)

Acción por defecto

La acción por defecto es 'index'. Para cambiarla, añadimos al principio la variable defaultAction:

public $defaultAction='create';

Cambiar los permisos de ejecución de una acción

Modificamos el método AccessRules. Para cada bloque, definimos la lista de acciones y los usuarios permitidos para esas acciones:

  • Público:
     'users'=>array('*')
  • Cualquier usuario registrado:
     'users'=>array('@')
  • Un usuario determinado:
     'users'=>array('admin')
  • Una expresión:
     'expression'=>'Yii::app()->user->roles=="PR"'

    . En este caso, utilizamos un dato del usuario activo(roles), que previamente habremos guardado en el momento del login del usuario. Otro ejemplo:

     'expression'=>'checkpermiso("profesor")'

    . En este caso, llamamos a una función que comprueba si tenemos permiso de profesor. Esta función deberá devolver true o false. IMPORTANTE: La expresión va entre comillas simples porque no se evalúa en este momento, sino que se hará con eval en el momento de comprobar los permisos de ejecución.

Si necesitas un control más complejo de los permisos, consulta Trabajar con roles

Crear una acción

  1. Creamos un método llamado actionACCION, que tendrá como parámetros aquellos datos que sea obligatorio recibir por $_GET. Por ejemplo:
      function actionImprimir($id){
      ...
      }
     

    En este caso, la acción imprimir tendrá que ejecutarse de la forma index.php?r=entradas/imprimir&id=33

  2. Añadimos la acción a AccessRules para asociarle los permisos
  3. Si es necesario, creamos la vista correspondiente en views/controlador. (Por ejemplo: views/entradas/imprimir.php)