lunes, 29 de agosto de 2016

Crear tarea con Gulp.js

var gulp = require('gulp');
var sass = require('gulp-sass');
var rename = require('gulp-rename');

gulp.task('styles', function () {
  gulp
    .src('index.scss')
    .pipe(sass())
    .pipe(rename('app.css'))
    .pipe(gulp.dest('public'));
})

gulp.task('default', ['styles'])

Gestores de Javascript


GESTORES DE PAQUETES

http://duojs.org/

https://bower.io/

https://www.npmjs.com/

PACKAGE BUNDLING

https://webpack.github.io/

GESTORES DE TAREAS

http://gruntjs.com/

http://gulpjs.com/

PREPROCESADORES CSS

 http://sass-lang.com/

http://lesscss.org/

http://stylus-lang.com/

MOTORES DE TEMPLATES

http://jade-lang.com/   tambien conocido como pug

http://html2jade.org/  convertidor de html a jade

Crear servidor basico con node

Una vez  instalado node, npm  express

$npm install --save express


var express = require('express');  //busca en node_modules

var app = express();

app.get('/', function (req, res) {
  res.send('Hola mundo!');
})

app.listen(3000, function (err) {
  if (err) return console.log('Hubo un error'), process.exit(1);

  console.log('Platzigram escuchando en el puerto 3000');
})


Se ejecuta con

$node server.js

Desarrollo Web

Todo proyecto web tiene 3 bloques esenciales:

HTML: Qué otorga toda la estructura o semántica a nuestro sitio.

CSS: Aquél que le da el estilo y hace de nuestro sitio algo único.

JavaScript:  Con JavaScript ganamos interacción en el sitio y prácticamente es el lenguaje de programación en el que está escrito todo sitio web, inclusive, se encuentra en el backend, algo impensable hace años. JavaScript además es muy versátil, puedes construir desde aplicaciones de escritorio, aplicaciones nativas para dispositivos móviles, aplicaciones de consola etc. JavaScript se está comiendo al mundo.

martes, 16 de agosto de 2016

Autoload en composer

$composer init

¿Qué es PSR-4?

Es una especificación para la auto carga de clases desde la ruta de los archivos. Describe dónde se encuentran ubicados los archivos que serán autocargados. PSR-4 hace uso de namespaces para distinguir una clase de otra, esto es de gran ayuda cuando ocupamos librerías de terceros porque en muchas ocaciones existirán clases con el mismo nombre que las nuestras y podrían sobreescribirse o usar una que no queremos.
PSR-4 fue creada por el grupo de interoperabilidad de PHP, ellos han trabajado en la creación de especificaciones de desarrollo para este lenguaje para que estandarizemos diferentes procesos, como es en este caso el como nombrar las clases de nuestro proyecto y hacer uso de ellas.
Usar especificaciones PSR-4 no es obligatorio y su uso puede ser completo o parcial, aunque es recomendable no omitirlo porque a Composer le permite cargar nuestras clases automaticamente.

{
    "name": "root/php-laravel",
    "description": "Proyecto platzi",
    "authors": [
        {
            "name": "Cesar Morones",
            "email": "cesar.morones1@gmail.com"
        }
    ],
    "require": {},
    "autoload":{
    "psr-4":{
    "PlatziPHP\\":"src/"
    }
    }
}


$composer install

Se genera el archivo autoload.php

<?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer' . '/autoload_real.php';

return ComposerAutoloaderInit5748c7d7212ca7928ae93c42af2f4660::getLoader();


Lo cual nos va ayudar a des

viernes, 12 de agosto de 2016

dropDownList con base de datos

use yii\widgets\ActiveForm;
use app\models\CatCarreras;



 <?= $form->field($model,'id_carrera')->dropDownList(
        ArrayHelper::map(CatCarreras::find()->all(),'id','ciudad')
      ) ?>

miércoles, 10 de agosto de 2016

poner un contador en un gridview con SerialColumn

<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'user.username',
[
'attribute' => 'live',
'header' => 'Live?',
'value'=>function($data) {
return ($data->live == 1) ? "Live" : "Draft";
},
'filter' => ['0' => 'Draft', '1' => 'Live'],
],
'title',
[
'header' => 'Snippet',
'value'=>function($data) {
return substr($data->content, 0, 100);
290CHAPTER 12. WORKING WITH WIDGETS
},
'format'=>'html'
],
// 'date_updated',
// 'date_published',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>

Giltros en gridview

# views/user/index.php
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'username',
'email:email',
[
'attribute' => 'type',
'filter' => ['public' => 'Public', 'author' => 'Author',
'admin' => 'Admin'],
],
['class' => 'yii\grid\ActionColumn'],
],
]); ?>

Grid en yii2

# views/page/index.php
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'user.username',
[
'header' => 'Live?',
'value'=>function($data) {
return ($data->live == 1) ? "Live" : "Draft";
}
],
'title',
[
'header' => 'Snippet',
'value'=>function($data) {
return substr($data->content, 0, 100);
},
'format' => 'html'
],
'content:html',

// 'date_updated',
// 'date_published',
['class' => 'yii\grid\ActionColumn'],
],
)); ?>

martes, 9 de agosto de 2016

Transactions

$transaction = \Yii::$app->db->beginTransaction();
try {
\Yii::$app->db->createCommand($sql)->execute();
\Yii::$app->db->createCommand($sql)->execute();
//[ ... more queries ...]
$transaction->commit();
} catch (\Exception $e) {
$transaction->rollBack();
}

ejecutar querys con parametros

\Yii::$app->db ->createCommand("UPDATE user SET first_name = 'Tom' WHERE id = " . $_GET['id']) ->execute();


\Yii::$app->db ->createCommand("UPDATE user SET first_name = :name WHERE id = :id)
->bindValue(':name', 'Tom')
->bindValue(':id', $_GET['id'])
->execute();
Alternatively, we can use the bindValues() method to bind several parameters into a
single call:
\Yii::$app->db ->createCommand("UPDATE user SET first_name = :name WHERE id = :id)
->bindValues([ ':name' => 'Tom', ':id' => $_GET['id'] ])
->execute();
For convenience, the previous query can be rewritten so that the parameters are in line
with the createCommand() method:
$params = [ ':name' => 'Tom', ':id' => $_GET['id'] ];
\Yii::$app->db ->createCommand("UPDATE user SET first_name = :name WHERE id = :id, $params) ->execute();

Ejecutando querys deinsert y update

\Yii::$app->db ->createCommand('INSERT INTO user (email, password) VALUES
("test3@example.com", "test3");') ->execute();

// INSERT ( tablename, [ attributes => attr ] )
\Yii::$app->db
->createCommand()
->insert('user', [
'email' => 'test4@example.com',
'password' => 'changeme7',
'first_name' => 'Test',
'last_name' => 'User',
'created_at' => time(),
'updated_at' => time()
])
->execute();

// DELETE ( tablename, condition )
\Yii::$app->db
->createCommand()
->delete('user', 'id = 3')



// batchInsert( tablename, [ properties ], [ rows ] )
\Yii::$app->db
->createCommand()
->batchInsert('user', ['email', 'password', 'first_name', 'last_name',
'created_at', 'updated_at'],
[
['james.franklin@example.com', 'changeme7', 'James', 'Franklin',
time(), time()],
['linda.marks@example.com', 'changeme7', 'Linda', 'Marks', time(),
time()]
['roger.martin@example.com', 'changeme7', 'Roger', 'Martin',
time(), time()]
])
->execute();

uso de queryColumn en yii2

$user = \Yii::$app->db->createCommand('SELECT email FROM user;')
->queryColumn();
Like queryAll() , queryColumn() will return an array of results:
Array
(
[0] => test@example.com
)

Traer varios registros de la base de datos

$users = \Yii::$app->db ->createCommand('SELECT * FROM user;')
->queryAll();
After running this command, our $users variable will be populated  with an array of users:
Array
(
[0] => Array
(
[id] => 1
[email] => test@example.com
[password] => test123
[first_name] => test
[last_name] => user
[created_at] => 0
[updated_at] => 0
)
)

Traer un registro de la base de datos

$user = \Yii::$app->db ->createCommand('SELECT * FROM user WHERE id= 1;')
->queryOne();
The queryOne() method returns an array of data for a single element. In the event that no data is found, this method will return false :
Array
(
[id] => 1
[email] => test@example.com
[password] => test123
[first_name] => test
[last_name] => user
[created_at] => 0
[updated_at] => 0
)

Obtener contar un queryScalar

$count = \Yii::$app->db ->createCommand('SELECT COUNT(*) FROM user;')
->queryScalar();

jueves, 4 de agosto de 2016

validaciones que s epueden usar en yii2

https://github.com/yiisoft/yii2/blob/master/docs/guide/tutorial-core-validators.md


https://github.com/yiisoft/yii2/blob/master/docs/guide/input-validation.md

martes, 2 de agosto de 2016

campos ocultos en yii

hidden field with model and form:
<?php echo $form->hiddenField($model, 'name'); ?>
or without model
<?php echo CHtml::hiddenField('name' , 'value', array('id' => 'hiddenInput')); ?>