Viernes, 15 Junio 2012 01:29

VT 17 PHP:POO+MVC - Crear un framework básico

Escrito por  Jaisiel Delance

En esta parte veremos la gestión de los permisos para los usuarios.

Descargar este Vídeo | Descargar código fuente | Descragar dump de la base de datos

96 comentarios

  • Enlace al Comentario Pedrog Lunes, 01 Septiembre 2014 00:33 publicado por Pedrog

    Hola Delance!
    El framework me gusta bastante y está quedando muy bien, pero me parece que has dado algunos saltos y que me perdí. Por ejemplo:
    ¿Cómo haces para que no puedan acceder a los botones de edición, borrar, añadir, pues no está tomando los permisos de permisos_usuario si no de permisos referentes al role de cada usuario?
    También he notado que cuando se añade un usuario nuevo, da un error, pero lo añade inactivo.

    Creo que por razones de tiempo y de ver más cosas, te saltaste algunos pasos que me han dejado descolocado totalmente.

    Otra cosa, como sugerencia: Sería bueno contar con un "Panel de Administración" desde donde se puedan llevar a cabo todas las tareas administrativas, tipo WordPress, mola más :)

  • Enlace al Comentario Jaisiel Delance Sábado, 02 Noviembre 2013 23:25 publicado por Jaisiel Delance

    Utiliza el metodo errorInfo de pdo:
    $this->_db->query($query);
    if( ! $this->_db->execute())
    {
    print_r($this->_db->errorInfo());
    }

    Observa el arreglo que devuelve errorInfo() y tomas el error.

  • Enlace al Comentario wimarbueno Viernes, 01 Noviembre 2013 21:28 publicado por wimarbueno

    hola amigo, una consulta,
    como se haría para mostrar el mensaje de error de MyQL?
    Por ejemplo: Cuando intento ingresar un registro y el nombtre de la tabla es incorrecta.
    Gracias

  • Enlace al Comentario Jaisiel Delance Domingo, 03 Marzo 2013 15:33 publicado por Jaisiel Delance

    Hola julian,

    En esta entrada del foro estan las vistas en phtml:
    http://dlancedu.com/foro/PHP/534-Como-hago-esto-en-codigo-PHP.html

    En cuanto al error, estas intentando acceder al constructor de la clase padre y tu clase View no extiende de ningun padre.

  • Enlace al Comentario Julian Sábado, 02 Marzo 2013 01:12 publicado por Julian

    Maestro Jaisiel Delance, realizando y probando los mismos pasos que usted hace al momento de mostrar los datos de permisos de usuarios,
    no me esta mostrando, no utilizo la vista smarty los datos usted los realiza asi:

    {foreach from=$permisos item=pr}
    {$role.$pr.valor}
    {$usuario.$pr.id}
    {$usuario.$pr.permiso}
    {$usuario.$pr.valor}
    {$usuario.$pr.heredado}
    {/foreach}
    para aceeder a las varables de caada una teniendo permisos como la principal.

    Al momento de ralizar los mismos pasos sale de esta forma:
    foreach ($this->permisos as $permisos){
    echo 'permisosI : '. $permisos.$this->role['id'].'';
    echo 'permisosI : '. $permisos.$this->role['id'].'';
    echo 'permisosI : '. $permisos.$this->role['id'].'';
    echo 'permisosI : '. $permisos.$this->role['id'].'';
    }
    sale esto
    permisosI : admin_access
    permisosI : nuevo_post
    permisosI : editar_post
    permisosI : eliminar_post

    foreach ($this->permisos as $permisos){
    echo 'permisosI : '. $this->role.$permisos['id'].'';
    }
    sale esto
    permisosI : Arraya
    permisosI : Arrayn
    permisosI : Arraye
    permisosI : Arraye

    Como necesito los valores de los campos:
    valor,permiso,heredado, puedo recorrer con el foreach la variable $this->usuario que muestra esos datos.

    echo 'usuarioI : '. $usuario['id'].'';
    echo 'usuarioP : '. $usuario['permiso'].'';
    echo 'usuarioH : '. $usuario['heredado'].'';
    echo 'usuarioV : '. $usuario['valor'].'';

    Le consulto debido a que llevo sus estructura y esto es distinto de como usted lo lleva.

    Otro error que me salio es el la clase View.php en la funcion

    public function __construct(Request $peticion, Acl $_acl)
    {
    //parent::__construct();
    $this->_controlador = $peticion->getControlador();
    $this->_js = array();
    $this->_acl = $_acl;
    }


    que me toca comentar la primera linea para que ejecute el codigo de la aplicacion ya que si lo descomento me sale este error:
    Fatal error: Cannot access parent:: when current class scope has no parent in C:\AppServ\www\PruebaMVC\application\View.php on line 11.

    Que me aconseja en estos casos, se lo agradezco.

    Gracias.

  • Enlace al Comentario Jaisiel Delance Viernes, 25 Enero 2013 13:59 publicado por Jaisiel Delance

    revisa la condicional if cuando comparas el valor del permiso y sacas el atributo checked="checked" en los radio

  • Enlace al Comentario Leonardo Rosales Lunes, 21 Enero 2013 17:07 publicado por Leonardo Rosales

    muchas gracias por tu ayuda profesor pero tengo que volver a molestarte otra vez bueno hay vamos aprendiendo en la parte del foreach como quedaria en las pruebas que estoy haciendo lo tengo de esta manera permisos as $i => $this->permisos):?> de esta manera me esta imprimiendo todo pero en el momento de cambiar los permisos siempre me lo deja en denegado no se si tenga el foreach mal configurado esta es la ayuda que te pido ahora y muchas gracias por tus respuestas

  • Enlace al Comentario Jaisiel Delance Lunes, 21 Enero 2013 04:12 publicado por Jaisiel Delance

    El arreglo $this->permisos es asociativo no contiene indices, debes utilizar foreach

  • Enlace al Comentario Leonardo Rosales Viernes, 18 Enero 2013 16:12 publicado por Leonardo Rosales

    nuevamente hola profesor he vuelto a retomar otraves el desarrollo del framework y no he podido solucionar el problema que he tenido en la vista permisos_roles al pasarla al primer motor de plantilla que tubo el framewor bueno esta es la vista pasada al las primeras plantillas el problema que tengo es que en el $this->permisos[$i]['nombre'] me esta dando un error como al igual que en los radio button el error es el siguiente

    Notice: Undefined offset: 0 in C:\xampp\htdocs\primitive\views\acl\permisos_role.phtml on line 23

    ps he buscado en internet y se refieren que el array que esta buscando el valor $i no se encuentra definido ps acudo a usted para ver si me puede ayudar y este es elcodigo le agradeceria mucho de su ayuda ya que no he podido solucionar este proble por la poca falta de conocimiento que tengo sobre este tema muchas gracias por su atencion

    Administracion de permisos de role

    Role: role['role'] ?>


    Permisos




    permisos) && count($this->permisos)): ?>



    Permiso
    Habilitado
    Denegado
    Ignorar

    ?php for(i = 0; $i permisos); $i++):?>


    permisos[$i]['nombre']; ?>

    input type="radio" name="perm_permisos[$i]['id'];?>" value="1" permisos[$i]['valor'] == 1 ?> checked="checked" />
    input type="radio" name="perm_permisos[$i]['id'];?>" value=""permisos[$i]['valor'] == "";?> checked="checked" />
    input type="radio" name="perm_permisos[$i]['id'];?>" value="x"permisos[$i]['valor']=== "x";?> checked="checked" />








  • Enlace al Comentario Jaisiel Delance Sábado, 13 Octubre 2012 13:31 publicado por Jaisiel Delance

    Hola a todos, gracias por sus comentarios,

    Rosales,
    puedes hacerlo enviando el nombre del checkbox con el id de usuario:



    type="checkbox" name="usuario_{$usuario_id}" value="1"


    /* en el controller puedes hacer un bucle para tomar los usuarios seleccionados: */

    $usuarios = array_keys($_POST);
    $eliminar = array();

    foreach($usuarios as $usuario){
    if(substr($usuario, 0, 8) == 'usuario_'){
    /* en el substr() se cuenta 8 porque la variable del checkbox se llama "usuario_" y contiene 8 caracteres */
    if($_POST[$usuario] == 1){
    $eliminar[] = substr($usuario, -(strlen($usuario) - 8));
    }
    }
    }

    /* luego recorres el arreglo para eliminar los usuarios enviados */
    foreach($eliminar as $id){
    $this->tu_model->eliminarUsuario($id);
    }


    Luis,

    En el metodo acceso de la clase ACL coloca un "exit" al final:

    header("location:" . BASE_URL . "error/access/5050");
    exit;

    este error y otros se muestran en este tema del foro:
    http://dlancedu.com/foro/PHP/204-Correcci%C3%B3n-sistema-de-ACL-de-los-tutos-16-y-17.html

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el Código HTML.

hosting joomla