MYSQL como hacer accesible una base de datos local en una red

ejecutar en alguna consola cliente de base de datos:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '<roots-password>' WITH GRANT OPTION;

yii2 quitar index.php de la url

crear un archivo llamado .htaccess en la raiz del proyecto con el sgt contenido:

RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php


en config/web.php agregar:

'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'showScriptName' => false,
            'enablePrettyUrl' => true,
            'rules' => array(
                  '<controller:\w+>/<id:\d+>' => '<controller>/view',
                  '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                  '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ),
        ],

yii2 como sacar el web de la url

copie el contenido de la carpeta web a la raiz del proyecto

en index.php actualice los links

<?php
    defined('YII_DEBUG') or define('YII_DEBUG', false);
    defined('YII_ENV') or define('YII_ENV', 'dev');

    require(__DIR__ . '/../vendor/autoload.php');
    require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

    $config = require(__DIR__ . '/../config/web.php');
    (new yii\web\Application($config))->run();
 
 
por:
 
<?php
    defined('YII_DEBUG') or define('YII_DEBUG', false);
    defined('YII_ENV') or define('YII_ENV', 'dev');

    require(__DIR__ . '/vendor/autoload.php');
    require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');

    $config = require(__DIR__ . '/config/web.php');
    (new yii\web\Application($config))->run(); 

yii2 guardar modelos y sus relaciones

vamos a usar la siguiente extension


https://packagist.org/packages/la-haute-societe/yii2-save-relations-behavior

la descargamos usando composer

composer require --prefer-dist la-haute-societe/yii2-save-relations-behavior "*"
 
en mi caso tengo 2 clases una Grupo e Item, donde 
un grupo tiene muchos items y cada item pertenece a un solo grupo.
 
editamos el modelo de Grupo
 
use lhs\Yii2SaveRelationsBehavior\SaveRelationsBehavior;

class Grupo extends \yii\db\ActiveRecord
{
   
    public function behaviors()
    {
        return [
           'saveRelations' => [
                'class'     => SaveRelationsBehavior::className(),
                'relations' => ['items']
            ],
        ];
    }
 
 
 


yii2 usando composer

1) descargar e instalar composer para windows

https://getcomposer.org/download/

2) agregar en las variables de entorno PATH
 la carpeta donde se guardó composer.phar

usalmente será: C:\ProgramData\ComposerSetup\bin

3) instalando un widget
por ejemplo el multiselect

https://github.com/2amigos/yii2-multi-select-widget

en el readme dice que en la carpeta root del proyecto por consola tiremos este comando

php composer.phar require 2amigos/yii2-multi-select-widget "*"
 
pero vamos a usar
 
composer require 2amigos/yii2-multi-select-widget "*" 


esta será la salida

./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Reading bower.json of bower-asset/jquery (1.10.0)
Could not fetch https://api.github.com/repos/jquery/jquery-dist/contents/bower.j
son?ref=2c62b787b2cafb32af14edadc963b8ba3cb847b8, please create a GitHub OAuth t
oken to go over the API rate limit
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+
on+CGWKS588+2016-08-18+2213
to retrieve a token. It will be stored in "C:/Users/ibazan/AppData/Roaming/Compo
ser/auth.json" for future use by Composer.
Token (hidden):


copiar la url que nos indican (https://github.com/settings/tokens/new?scopes=repo&description=Composer+
on+CGWKS588+2016-08-18+2213) ingresar con nuestro usuario de github y obtener el token, pegarlo (no se verá) y darle enter
para que continue con la bajada de archivos
 
 

Token stored successfully.
  - Installing 2amigos/yii2-multi-select-widget (0.1.1)
    Downloading: 100%

Writing lock file
Generating autoload files 






 



yii 2 empezando

1) instalarlo via composer o descargar el zip con la ultima version.

http://www.yiiframework.com/download/

en el zip al descomprimir hay una carpeta llamada basic, cambiarle el nombre al de tu proyecto y colocarlo en una carpeta de publicacion web.

xampp/htdocs

entrar a web.php y escribir un numero de clave cualquiera

config/web.php 

'cookieValidationKey' => 'enter your secret key here',
 
2) conectarse a la bd

en web/config.db

3) generar codigo con gii

http://localhost/economy-admin/web/index.php?r=gii

( en las secciones de model generator y crud generator tildar las opcion de i18n )

4) habilitar i18n:

en la carpeta del proyecto por linea de comando

yii message/config @app/config/i18n.php

esto creará el archivo i18n.php en config

se puede editar las sgts entradas del archivo para volver a generar las carpetas con los archivos de idiomas 
(por default ya vienen en vendor/yiisoft/yii2/messages)

...
'sourcePath' => __DIR__. DIRECTORY_SEPARATOR .'..',
'messagePath' => __DIR__ . DIRECTORY_SEPARATOR . 'messages',

'languages' => ['es'],
...

(en este caso le estamos diciendo que los genere dentro de la carpeta config/messages, que debemos crear previamente)

en la carpeta por linea de comando:

yii message/extract @app/config/i18n.php

luego editar config/web.php 
y agregar la sgt linea 

'language'=>'es', // spanish




esto generará 2 archivos en la carpeta messages/es:
yii.php con las entradas comunes a todo el proyecto
app.php  con las entradas particulares del proyecto como las labels de los modelos.
[no tengo manera de que lea las entradas de t('app','xxx xxx') BUG]



 


git repositorio remoto

1) crear un repositorio remoto en github

https://github.com

loguearte
y hacer click en el "+" del extremo superior derecho
seguir los pasos correspondientes.

en mi caso cree uno llamado webazan que tiene la sgt url

https://github.com/israelbazan76/webazan.git

2) agregar elrepositorio remoto

git remote add origin https://github.com/israelbazan76/webazan.git

3) ahora ya podemos enviar nuestros commits al servidor remoto.

The name of our remote is origin and the default local branch name is master. The -u tells Git to remember the parameters, so that next time we can simply run git push

(nos va a aparecer un popup para loguearnos al github por unica vez)

git push -u origin master

(al crear nuestro repositorio remoto nos indican que creemos un readme https://help.github.com/articles/create-a-repo/ lo que provocara que no podamos hacer el push, entonces vamos a mofificar el comando agregando el parametro -f para forzar el push)

git push -f origin master

Counting objects: 8, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 2.25 KiB | 0 bytes/s, done.
Total 8 (delta 1), reused 0 (delta 0)
To https://github.com/israelbazan76/webazan.git
 + 0b296cd...627080b master -> master (forced update) 


4) si agregamos un nuevo archivo luego de agregarlo a nuestro master local con git add "*.php" 
y lo commiteamos con git commit -m "algun comentario"
ya lo podremos pushear asi:

git push origin master

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 682 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/israelbazan76/webazan.git
   627080b..4613798  master -> master 


5) si agregamos al stage

git add "datos.sql"

lo podemos quitar del stage

git reset datos.sql

6) para regresar todo lo local al estado del ultimo commit

git checkout -- datos.sql 

7) si en una carpeta iniciada en git (git init) clonamos un repo remoto (git clone https://github.com/israelbazan76/webazan.git) para poder pushear debemos hacer todo el proceso de add y commit que conocemos.
no solo eso sino que ademas debemos linkear la carpeta con el repo (git remote add origin https://github.com/israelbazan76/webazan.git) asi le asigna el nombre por default de "origin" y pullear con el parametro que permite mergear las historias no relacionadas (git pull origin master --allow-unrelated-histories) calculo que es por el "readme" que no se clona

8) si haces algun cambio en un archivo y quieres ver la diferencia con el que está en tu repo local
usa

C:\Users\ibazan\test-git-1>git diff head
diff --git a/webazan/view.php b/webazan/view.php
index e463698..14bc399 100644
--- a/webazan/view.php
+++ b/webazan/view.php
@@ -2,7 +2,7 @@
 /* @var $this UsersController */
 /* @var $model Users */

-/**holaaaaaaaaaaaaaaa**/
+/**holaaaaaaaaaaaaaaa chauuuuuuuuuuuuuu**/
 ?>

en el ejemplo se agregó "chauuuuuuuuuuuuuu"

entonces, luego de add y commit git diff head no devolverá nada (el archivo será el mismo no habiendo ninguna diferencia)

linux ubuntu mint actualizar chrome

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