Mostrando entradas con la etiqueta YII2. Mostrar todas las entradas
Mostrando entradas con la etiqueta YII2. Mostrar todas las entradas

miércoles, 12 de julio de 2017

Crear urls amigables yii2



Como crear url amigables con Yii2


Luego de crear las CRUD de mis tablas, la url que corresponde a la acción create, me muestra de esta forma:

http://Miproyectoyii2/web/index.php?r=tbcompra%2Fcreate



Esta es la url a la que quiero llegar ( Url Amigable): urlMiapp/web/contralador/acciondelcontrolador


http://Miproyectoyii2/web/tbcompra/create




Paso 1 : Abrir el archivo web.php que se encuentra dentro de tu proyecto en la carpeta config, para incluir estos códigos

  1. 'components' => [
  2.  
  3. 'urlManager' => [
  4. 'class' => 'yii\web\UrlManager', //clase UrlManager
  5. 'showScriptName' => false, //eliminar index.php
  6. 'enablePrettyUrl' => true, //urls amigables
  7. 'showScriptName' => false, //eliminar index.php
  8. 'enablePrettyUrl' => true //urls amigables
  9. ],
  10. ], 

Paso 2 : Crear el archivo .htaccess dentro de carpeta web del  proyecto.
Este es el contenido que tendra nuestro archivo .htaccess.

  1. Options +FollowSymLinks
  2.  
  3. IndexIgnore */*
  4. RewriteEngine on
  5.  
  6. # If a directory or a file exists, use the request directly
  7. RewriteCond %{REQUEST_FILENAME} !-f
  8. RewriteCond %{REQUEST_FILENAME} !-d
  9.  
  10. # Otherwise forward the request to index.php
  11. RewriteRule . index.php
  12.  


Con estos sencillos cambios ya esta en condiciones de ejecutar la ruta amigable en tu proyecto yii2.


sábado, 27 de agosto de 2016

yii2 - Modificando el GridView


Modificaciones a realizar a al Widget Gridview:
  1. Modificar el titulo
  2. Modificar ancho de columnas
  3. Columna con valor numérico asignar separadores de miles

Utilizó el generador de código de Yii2, para generar el Modelo y la CRUD de mi tabla factcomptarj.


GridView dentro del archivo de mi vista index.php, dentro de la carpeta factcomptarj.
ubicación :  views/factcomptarj/index.php

Se encuentran señalados las actividades a realizar.



Viendo el código generado.


Primer cambio:
// encontrar el titulo 

$this->title = 'Factcomptarjs';


// modificamos por el nuevo titulo

$this->title = 'Tarjeta CR'; 


Segundo cambio:
// dentro del GridView, ubicar la columna id, y modificar por esta instrucción

[ 'attribute' =>'id',  'contentOptions'=>['style'=>'width:80px;'] ],

Tercer cambio:

// dentro del GridView, ubicar la columna importe, y modificar por esta instrucción.

[
 'attribute'=> 'importe',

 'format' => 'integer',

 'contentOptions'=>['style'=>'text-align:center;']

],


Código con lo cambios realizados.


Este es el resultado de los cambio aplicados


Espero que haya sido de utilidad, para los principiantes del Framework Yii2.

domingo, 17 de julio de 2016

Yii2 Formulario Modal via Ajax (create/update/view)

Paso 1) En el archivo index.php de la vista
Views/cliente/index.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
use yii\bootstrap\Modal;
use yii\helpers\Url;
?>

 <h1><?= Html::encode($this->title) ?></h1>
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
      
     // comenta este link
     <?= // Html::a('Create cliente', ['create'], ['class' => 'btn btn-success']) ?>
       
     // Agregar este boton  
     <?= Html::button('Create cliente', 
        ['value'=>Url::to(['cliente/create']),
                        'class' => 'btn btn-success','id'=>'modalButton']) ?>
    
    


//  Antes del GridView agregar esta declaracion modal

<?php
  Modal::begin([
     'header' =>'<h4>Ficha</h4>',
     'id'     =>'modal',
     'size'   =>'modal-lg',
     'clientOptions' => ['backdrop' => 'static', 'keyboard' => FALSE]
     ]);
  echo "<div id="modalContent"> </div>";
  Modal::end();
?>

<?php

GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
   
 ...

// ['class' => 'yii\grid\ActionColumn'],  

  // personalizamos la acciones del GridView
  [
   'class' => 'yii\grid\ActionColumn',
   'contentOptions' => ['style' => 'width: 8.7%'],
             //'visible'=> Yii::$app->user->isGuest ? false : true,
             'buttons'=>[
                      'view'=>function ($url, $model) {
                          return Html::button('<span class="glyphicon glyphicon-eye-open"></span>', 
                                       ['value'=>Url::to(['cliente/view', 'id'=>$model->id]), 
                                        'class' => 'btn btn-default btn-xs custom_button'
                                       ]);
                      },
                      'update'=>function ($url, $model) {
                          return Html::button('<span class="glyphicon glyphicon-pencil"></span>', 
                                       ['value'=>Url::to(['cliente/update', 'id'=>$model->id]),
                                        'class' => 'btn btn-default btn-xs custom_button'
                                        ]);
                      },
                  ],
            ],  // fin ActionColumn

       ],
    ]);
    ?>

Paso 2) assets/AppAsset.php

1
2
3
  public $js = [
     'js/formmodal.js',
   ];
Paso 3) web\js\formmodal.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$(function(){
 
 //alert("jquery");
 
    $('#modalButton').click(function(){
       $('#modal').modal('show')
                  .find('#modalContent')
                  .load($(this).attr('value'));
        document.getElementById('modalHeader').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';
    });


    $('.custom_button').click(function(){
        $('#modal').modal('show')
                   .find('#modalContent')
                   .load($(this).attr('value'));
         //dynamiclly set the header for the modal
          document.getElementById('modalHeader').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';

    });


});


Paso 4) En el Controlador ClienteController.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php

public function actionView($id)
    {
        // remplazar render por renderAjax
        return $this->renderAjax('view', [
            'model' => $this->findModel($id),
        ]);
    }
public function actionCreate()
    {
        $model = new Cliente();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        } 
        elseif (Yii::$app->request->isAjax) {
            return $this->renderAjax('create', [
                        'model' => $model
            ]);
        } else {
            return $this->render('create', [
                        'model' => $model
            ]);
        }
    }

 public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }
        elseif (Yii::$app->request->isAjax) {
            return $this->renderAjax('update', [
                        'model' => $model
            ]);
        } else {
            return $this->render('update', [
                        'model' => $model
            ]);
        }
    }

?>
CREATE
view modal yii2

UPDATE

create modal yii2



VIEW

update modal yii2

python - método split()

  Cómo dividir cadena en subcadenas con  el method split()? En este ejemplo, le asigno a la variable varTP el bloque de información con el q...