Professional Documents
Culture Documents
es/2014/10/04/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 ?>
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.
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
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
¡Apuntarme!
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/
YouTube 34 k
Quizás te interese
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)
Angular (70)
Codeigniter (4)
Drupal 8 (5)
JavaScript (113)
Laravel 5 (20)
NodeJS (18)
PHP (175)
Symfony2 (55)
Symfony3 (35)
VueJS 2 (5)
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)
Sistemas (69)
Hardware (10)
Linux (47)
Windows (27)
Videos (16)
Esto mola
8 de 8 30/5/18 12:16