yii2 crear proyecto usando composer

abrir una consola e ir a la carpeta de acceso web,
en mi caso que uso xampp voy a htdocs
y ejecuto la siguiente sentencia:

composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic NOMBRE_PROYECTO

MYSQL como remover de una tabla una columna con indice

Simplemente:

 DROP INDEX [nombre_de_columna] ON [nombre_de_tabla];

MYSQL como setear un campo con el valor de una tabla relacionada

en este ejemplo tengo una relacion recursiva de la tabla items
donde la columna parent_id hace referencia al id de algun registro de la misma tabla.

Lo que queria es setear el campo name de los hijos con el mismo name del padre, entonces:

UPDATE items i INNER JOIN items p
    ON i.parent_id = p.id
SET i.name = p.name

yii2 quitar la barra inferior de debug yii-debug-toolbar

en index.php (el que se encuentra en la raiz del proyecto)

//defined('YII_DEBUG') or define('YII_DEBUG', true); // desarrollo
//defined('YII_ENV') or define('YII_ENV', 'dev'); // desarrollo
defined('YII_DEBUG') or define('YII_DEBUG', false); // produccion
defined('YII_ENV') or define('YII_ENV', 'prod'); //produccion

yii2 convertir un controller en un webservice restful

1)

tomar un controller existente y crear otro igual con distinto nombre.
Por ejemplo ItemsController.php -> Ws_itemsController.php

2)

hacer las sgts modificaciones

class Ws_itemsController extends ActiveController
{
    /**
     * @inheritdoc
     */
    // adjust the model class to match your model
    public $modelClass = 'app\models\Items';

    public function behaviors()
    {
        return
        \yii\helpers\ArrayHelper::merge(parent::behaviors(), [
                'corsFilter' => [
                        'class' => \yii\filters\Cors::className(),
                ],
               
               
        ],

        [
                'verbs' => [
                        'class' => VerbFilter::className(),
                        'actions' => [
                                'delete' => ['POST'],
                        ],
                ]
        ]);
    }


3)

en web.php
...
'urlManager' => [
            ....
            'rules' => array(
                 ......
                ['class' => 'yii\rest\UrlRule', 'controller' => ['ws_items']],
            ),
        ],
...

4)

en web.php
Opcionalmente, para que pueda aceptar como imput json
 ....
'components' => [
                'request' => [
                        .....
                        'parsers' => [
                                'application/json' => 'yii\web\JsonParser',
                        ]

                ],

5)

GET /ws_items: list all books page by page;
HEAD /ws_items: show the overview information of book listing;
POST /ws_items: create a new book;
GET /ws_items/123: return the details of the book 123;
HEAD /ws_items/123: show the overview information of book 123;
PATCH /ws_items/123 and PUT /books/123: update the book 123;
DELETE /ws_items/123: delete the book 123;
OPTIONS /ws_items: show the supported verbs regarding endpoint /books;
OPTIONS /ws_items/123: show the supported verbs regarding endpoint /books/123.



Yii2 acceder a los controllers solo si se está logueado

en controller.php


en el metodo beforeAction($action){

if(Yii::$app->user->isGuest && !($action->controller->id == 'site' && $action->id == 'login'))
            {
                $this->redirect(array('site/login'));
            }

}

yii2 agregar codigo javascript jquery en una vista


<?php
use yii\web\View;
$this->registerJs("

$(document).ready(function(){

    $(':checkbox').each(function (index, value){
          var valor = $(this).val();
        if($.isNumeric(valor)){
            //console.log(index);
           var html=$('.dropdown-menu label:eq('+index+')').html();
           html=html+'<img src=http://www.minecraft-servers-list.org/plugins/MinecraftIdList/img/126-2.png>';
            $('.dropdown-menu label:eq('+index+')').html(html);
        }else{
            console.log('NO es numero');
       
        }
 
});

});
", View::POS_READY);

?>

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable