You are on page 1of 8

CRUD con Yii Framework - Victor Robles | Victor Robles https://victorroblesweb.

es/2014/10/04/crud-con-yii-framework/

Inicio Desarrollo web » Sistemas » Cursos » Videos Sobre mi Contacto Newsletter

CRUD con Yii Framework


Inicio Desarrollo web CRUD con Yii Framework

Like 0

Vamos a ver como hacer un CRUD con Yii Framework (Create,Read,Update,Delete) de una tabla de la BD
pruebas llamada usuarios con las columnas id,email,password,nombre,apellido.

El formulario:

1 <?php
2 class UsuariosForm extends CFormModel{
3 //Campos que tendrá el formulario
4 public $nombre;
5 public $apellido;
6 public $password;
7 public $email;
8
9 //Reglas de validación
10 public function rules(){
11 return array(
12 //Estos campos serán obligatorios
13 array('nombre, email, password,apellido',
14 'required',
15 "message"=>"Este campo es obligatorio"),
16
17 //Validando el nombre con una expresión regular
18 array(
19 "nombre, apellido",
20 "match",
21 "pattern" => "/^[a-zA-Z ñÑáéíóúüç]*$/",
22 "message"=>"El nombre solo puede estar formado por letras"
23 ),
24
25 //Aplicamos la validación de emails
26 array('email', 'email','message'=>"El email es incorrecto"),
27
28 //Especificamos una longuitud a la contraseña
29 array('password', 'length',
30 "min"=>8,
31 'tooShort'=>"La contraseña debe tener como mínimo 8 letras"),
32
33 );
34 }
35 }
36 ?>

El modelo, voy a utilizar el Query Builder para ejecutar las consultas:

1 <?php
2 class Usuarios extends CActiveRecord{
3 private $connection;
4 private $getUsuarios;
5 private $getUnUsuario;
6
7 public function __construct(){
8 //Lanzamos la conexión a la base de datos
9 $this->connection=new CDbConnection(
10 //Cogemos la configuración asignada en config/main.php
11 Yii::app()->db->connectionString,
12 Yii::app()->db->username,
13 Yii::app()->db->password
14 );
15
16 //Activamos la conexión
17 $this->connection->active=true;
18
19
20 }
21
22 //Heredamos del modelo
23 public static function model($className=__CLASS__){
24 return parent::model($className);
25 }
26
27 //Método para conseguir todos los usuarios
28 public function getUsuarios(){

1 de 8 30/5/18 12:16
CRUD con Yii Framework - Victor Robles | Victor Robles https://victorroblesweb.es/2014/10/04/crud-con-yii-framework/

29 $this->getUsuarios=$this->connection->createCommand()
30 ->select("*")->from('usuarios')->queryAll();
31 return $this->getUsuarios;
32 }
33
34 //Método para conseguir un solo usuario
35 public function getUnUsuario($id){
36 $this->getUnUsuario=$this->connection->createCommand()
37 ->select("*")->from('usuarios')
38 ->where("id=$id")->queryAll();
39 return $this->getUnUsuario;
40 }
41
42 //Método para eliminar usuarios
43 public function eliminar($id){
44 $delete=$this->connection->createCommand()->
45 delete("usuarios", "id=$id");
46 return $delete;
47 }
48
49 //Método para añadir usuarios
50 public function add($nombre,$apellido,$email,$password){
51 $insert=$this->connection->createCommand()->
52 insert("usuarios",array(
53 "nombre"=>$nombre,
54 "apellido"=>$apellido,
55 "email"=>$email,
56 "password"=>$password
57 ));
58 return $insert;
59 }
60
61 //Método para modificar usuarios
62 public function mod($id,$nombre,$apellido,$email,$password){
63 $update=$this->connection->createCommand()->
64 update("usuarios",array(
65 "nombre"=>$nombre,
66 "apellido"=>$apellido,
67 "email"=>$email,
68 "password"=>$password
69 ),"id=$id");
70 return $update;
71 }
72
73 }
74 ?>

El controlador:

1 <?php
2 class CrudController extends Controller{
3 public $layout="//layouts/plantilla";
4
5 private $usuarios;
6
7 public function __construct($id, $module = null) {
8 parent::__construct($id, $module);
9
10 //Este objeto esta disponible en todos los métodos
11 $this->usuarios=new Usuarios;
12 }
13
14 public function actionIndex(){
15 $getUsuarios=$this->usuarios->getUsuarios();
16 $this->render('index',array(
17 "usuarios"=>$getUsuarios
18 ));
19 }
20
21 public function actionAdd(){
22 $usuarios_form=new UsuariosForm();
23 $title="Añadir nuevos usuarios";
24
25 if(isset($_POST['UsuariosForm'])){
26 $usuarios_form->attributes=$_POST['UsuariosForm'];
27 if($usuarios_form->validate()){
28 $nombre=$_POST["UsuariosForm"]["nombre"];
29 $apellido=$_POST["UsuariosForm"]["apellido"];
30 $email=$_POST["UsuariosForm"]["email"];
31 $password=$_POST["UsuariosForm"]["password"];
32
33 $this->usuarios->add($nombre, $apellido, $email, $password);
34 $this->redirect(Yii::app()->request->baseUrl."/crud");
35 }
36 }
37
38 $this->render('form',array(
39 "title"=>$title,
40 "model"=>$usuarios_form
41 ));
42 }
43
44 public function actionModificar($id=null){
45 if($id==null){
46 $this->redirect(Yii::app()->request->baseUrl."/crud");
47 }
48
49 $usuarios_form=new UsuariosForm();
50 $title="Editar usuario ".$id;
51 $usuario=$this->usuarios->getUnUsuario($id);
52
53 if(isset($_POST['UsuariosForm'])){
54 $usuarios_form->attributes=$_POST['UsuariosForm'];
55 if($usuarios_form->validate()){
56 $nombre=$_POST["UsuariosForm"]["nombre"];

2 de 8 30/5/18 12:16
CRUD con Yii Framework - Victor Robles | Victor Robles https://victorroblesweb.es/2014/10/04/crud-con-yii-framework/

57 $apellido=$_POST["UsuariosForm"]["apellido"];
58 $email=$_POST["UsuariosForm"]["email"];
59 $password=$_POST["UsuariosForm"]["password"];
60
61 $this->usuarios->mod($id,$nombre, $apellido, $email, $password);
62 $this->refresh();
63 }
64 }
65
66
67 $this->render('form',array(
68 "title"=>$title,
69 "model"=>$usuarios_form,
70 "usuario"=>$usuario[0]
71 ));
72 }
73
74 public function actionEliminar($id=null){
75 $delete=$this->usuarios->eliminar($id);
76 $this->redirect(Yii::app()->request->baseUrl."/crud");
77 }
78 }

Las vistas:

index.php

1 <div class="col-xs-9">
2 <h2 style="display: inline;">Crud con Yii Framework</h2></div>
3 <div class="col-xs-3">
4 <a class="btn btn-success" href="<?=Yii::app()->request->baseUrl?>/crud/add">
5 Añadir nuevo usuario
6 </a>
7 </div>
8 <div style="clear:both"></div>
9 <hr/>
10 <table class="table table-striped">
11 <tr>
12 <th>ID</th>
13 <th>NOMBRE</th>
14 <th>APELLIDOS</th>
15 <th>EMAIL</th>
16 <th>PASSWORD</th>
17 <th>EDITAR</th>
18 <th>ELIMINAR</th>
19 </tr>
20 <?php foreach ($usuarios as $usuario) { ?>
21 <tr>
22 <td><?=$usuario["id"]?></td>
23 <td><?=$usuario["nombre"]?></td>
24 <td><?=$usuario["apellido"]?></td>
25 <td><?=$usuario["email"]?></td>
26 <td><?=substr($usuario["password"],0,18)?></td>
27 <td>
28 <a class="btn btn-primary" href="<?=Yii::app()->
29 request->baseUrl?>/crud/modificar/<?=$usuario["id"]?>">
30 <span class="glyphicon glyphicon-edit"></span>
31 </a>
32 </td>
33 <td>
34 <a class="btn btn-danger" href="<?=Yii::app()->request->baseUrl
35 ?>/crud/eliminar/<?=$usuario["id"]?>">
36 <span class="glyphicon glyphicon-trash"></span>
37 </a>
38 </td>
39 </tr>
40 <?php } ?>
41 </table>

form.php Esta vista se reutiliza varias veces, los buenos frameworks permiten hacer esto.

1 <?php echo $this->setPageTitle($title); ?>


2 <h2><?=$title?></h2>
3
4 <div class="form col-lg-10">
5 <?php
6 //Formulario con validación en frontend y backend
7 $form=$this->beginWidget('CActiveForm',array(
8 "method"=>"POST",
9 "action"=>"",
10 "enableClientValidation"=>true,
11 "clientOptions"=>array(
12 "validateOnSubmit"=>true,
13 "validateOnChange"=>true,
14 "validateOnType"=>true
15 )
16 )); ?>
17
18 <?php echo $form->errorSummary($model); ?>
19
20 <div class="row">
21 <?php echo $form->label($model,'nombre'); ?>
22 <?php
23 if(isset($usuario)){
24 echo $form->textField($model,'nombre',
25 array("class"=>"form-control","value"=>$usuario["nombre"]));
26 }else{
27 echo $form->textField($model,'nombre',
28 array("class"=>"form-control"));
29 }
30 ?>
31 <?php echo $form->error($model,'nombre') ?>
32 </div>

3 de 8 30/5/18 12:16
CRUD con Yii Framework - Victor Robles | Victor Robles https://victorroblesweb.es/2014/10/04/crud-con-yii-framework/

33
34 <div class="row">
35 <?php echo $form->label($model,'apellido'); ?>
36 <?php
37 if(isset($usuario)){
38 echo $form->textField($model,'apellido',
39 array("class"=>"form-control","value"=>$usuario["apellido"]));
40 }else{
41 echo $form->textField($model,'apellido',
42 array("class"=>"form-control"));
43 }
44 ?>
45 <?php echo $form->error($model,'apellido') ?>
46 </div>
47
48 <div class="row">
49 <?php echo $form->label($model,'email'); ?>
50 <?php
51 if(isset($usuario)){
52 echo $form->emailField($model,'email',
53 array("class"=>"form-control","value"=>$usuario["email"]));
54 }else{
55 echo $form->emailField($model,'email',
56 array("class"=>"form-control"));
57 }
58 ?>
59 <?php echo $form->error($model,'email') ?>
60 </div>
61
62 <div class="row">
63 <?php echo $form->label($model,'password'); ?>
64 <?php
65 if(isset($usuario)){
66 echo $form->textField($model,'password',
67 array("class"=>"form-control","value"=>$usuario["password"]));
68 }else{
69 echo $form->textField($model,'password',
70 array("class"=>"form-control"));
71 }
72 ?>
73 <?php echo $form->error($model,'password') ?>
74 </div>
75 <br/>
76 <div class="row submit">
77 <?php echo Chtml::submitButton('Guardar', array("class"=>"btn btn-success"
78 </div>
79
80 <?php $this->endWidget(); ?>
81 </div><!-- form -->

El resultado �nal:

4 de 8 30/5/18 12:16
CRUD con Yii Framework - Victor Robles | Victor Robles https://victorroblesweb.es/2014/10/04/crud-con-yii-framework/

Más información:
http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder#preparing-query-builder

También te gustará:

Paginación en Yii Crear modelo de Modelos en Yii Subir �cheros en Yii URLs amigables en Yii
Framework formulario en Yii Framework Framework Framework

Like 0

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

1 Comentario
JuanPablo

17 AGOSTO, 2016

Muy interesante. Recien comenzando, como seria la edicion inline, debo utilizar ajax?

Responder

Poner un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

5 de 8 30/5/18 12:16
CRUD con Yii Framework - Victor Robles | Victor Robles https://victorroblesweb.es/2014/10/04/crud-con-yii-framework/

Comentario

Nombre *

Correo electrónico *

Web

Guardar mi nombre, correo electrónico y sitio web en este navegador para la próxima vez que haga un
comentario.

Enviar comentario

Buscador

Buscar

Entra a mis cursos online

Recibe contenido exclusivo ⬇

Pon tu email y tendrás sorpresas

¡Apuntarme!

Sígueme y ve las novedades

6 de 8 30/5/18 12:16
CRUD con Yii Framework - Victor Robles | Victor Robles https://victorroblesweb.es/2014/10/04/crud-con-yii-framework/

Victor Robles WEB

YouTube 34 k

Quizás te interese

Novedades en Desarrollo web

Solución a los errores con


Rxjs y novedades en
Angular 6
May 25, 2018

Pasar un
proyecto de
Angular 5 a
Angular 6
May 24, 2018

Solución:
Vulnerabilities
error con NPM
May 23, 2018

Instalar Angular
6 con Angular
CLI
May 23, 2018

Categorías

Cursos (37)

Desarrollo web (310)

Angular (70)

Codeigniter (4)

Drupal 8 (5)

JavaScript (113)

Laravel 5 (20)

NodeJS (18)

PHP (175)

PHP POO (12)

Symfony2 (55)

Symfony3 (35)

VueJS 2 (5)

Yii Framework (20)

Zend Framework 2 (36)

7 de 8 30/5/18 12:16
CRUD con Yii Framework - Victor Robles | Victor Robles https://victorroblesweb.es/2014/10/04/crud-con-yii-framework/

Promociones (6)

Sin categoría (3)

Sistemas (69)

Hardware (10)

Linux (47)

Shell Script (5)

Windows (27)

Videos (16)

Esto mola

Desarrollado por Victor Robles © 2018

8 de 8 30/5/18 12:16

You might also like