Yii2 The “extra.asset-installer-paths” option is deprecated, use the “config.fxp-asset.installer-paths” option

Composer es un manejador de dependencias/librerías para proyectos en PHP,  mientras que Yii2 es un Framework de desarrollo MVC para proyectos en PHP.

Hace un tiempo que vengo recibiendo este warning cuando actualizo las librerías de composer con mi proyecto en Yii2, si bien es un warning y el sistema seguía funcionando sin problemas no lo quería ver más. A continuación como solucionarlo.

Read more

Yii2 Implementando Access Token para Autenticación REST

Los métodos de autenticación son los que nos permiten saber si un usuario pertenece a un sistema o no, generalmente cuando accedemos a algunas de nuestras cuentas de correo, facebook, etc lo que nosotros hacemos es autenticarnos con el servicio con nuestro usuario y clave. En este caso usaremos un Access Token para poder acceder a la aplicación.

Cuando usamos APIs en general, podemos acceder a la información de un servicio de una manera bastante sencilla. Nos gustaría que esto fuera por personas que tienen al menos una cuenta en el sistema o servicio.

En este caso veremos como implementar un access token para poder autentificarnos con la aplicación sin usar usuario o clave, lo que nos hará más sencillas las consultas.

Read more

¿ Es necesario un framework ? Simplificando el desarrollo de software

Esta es una discusión que he tenido en bastantes ocasiones con pares y alumnos. La idea de este post es explicar un poco lo que se ha logrado con todas estas discusiones.

En muchos de los casos durante la universidad no hemos tenido la necesidad de desarrollar un software complejo, un software el cual deba de adaptarse a las necesidades del entorno, las modificaciones de ciertas librerías o simplemente al tiempo. La semana pasada le di el ejemplo a un alumno sobre codeignigter, en mi caso fue el primer framework que utilicé para desarrollo web utilizando php y actualmente ( no se si vaya a cambiar pronto) ya no es compatible con las nuevas versiones de php. Esto le puede pasar a cualquier desarrolo, la cantidad de actualizaciones, parches y modificaciones que salen anualmente son muchas más de las que podemos contar. Si esto le pasa a una aplicación que es mantenida por cientos de personas en la comunidad .. ¿Que nos espera a una aplicación desarrollada por nosotros ?

Read more

Subiendo archivos CSV con Yii 2.0

Hace un par de días que me estoy haciendo un modulo que actualice la información que tengo en un sistema desarrollado en Yii2, por lo que decidí importar la información con un CSV que rescato de otra base de datos. Este post es sobre como arreglar un problema que existe al subir los archivos CSV al momento de ser validados.

A grandes rasgos subir archivos con Yii2 es bastante sencillo, se crea un modelo que se encarga de realizar las validaciones, se crea el controlador que pasa la información y la vista que en este caso mostrará el formulario para subir el archivo.

Al realizarlo con un archivo CSV esto no me funcionó, mientras que con todo el resto si, por lo que decidí publicar el proceso completo de como subir un archivo CSV a mi servidor usando Yii2.

 

Después de debugear bastante y escribir la pregunta en el foro de Yii sin respuesta encontré un bug report sobre el mismo proceso. Adjunto ambos links por si a alguien les sirve:

Siguiendo los mismos pasos de la guía para subir archivos de Yii2, lo primero que haremos es crear el modelo.

 

namespace app\models;

use yii\base\Model;
use yii\web\UploadedFile;

class UploadCSVForm extends Model
{
    /**
     * @var UploadedFile
     */
    public $File;

    public function rules()
    {
        return [
            [
                ['File'], 'file', 'skipOnEmpty' => false, 
                'extensions' => 'png, jpg, csv, pdf',
                'checkExtensionByMimeType' => false,
            ],
        ];
    }
    
    public function upload()
    {
        if ($this->validate()) {
            $this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
            return true;
        } else {
            return false;
        }
    }
}

Lo único que hemos cambiado es la opción de configuración checkExtensionByMimeType para evitar el problema que detecte de manera errada el CSV como PlainText y no permita que se suba de manera adecuada.

Ahora creamos la vista en la que subiremos el archivo. Ojo, el modelo que ocupamos lo especificamos en el controlador y no en la vista.

<?php
use yii\widgets\ActiveForm;
?>

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

    <?= $form->field($model, 'File')->fileInput() ?>

    <button>Submit</button>

<?php ActiveForm::end() ?>

Ahora el controlador que junta nuestro modelo con la vista.

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\UploadForm;
use yii\web\UploadedFile;

class SiteController extends Controller
{
    public function actionUploadCSV()
    {
        $model = new UploadCSVForm();

        if (Yii::$app->request->isPost) {
            $model->File = UploadedFile::getInstance($model, 'File');
            if ($model->upload()) {
                // file is uploaded successfully
                return;
            }
        }

        return $this->render('upload', ['model' => $model]);
    }
}

Esto que fue tan sencillo, me costó un par de días darme cuenta cual fue la razón de no poder subir el CSV. Revisé Apache, los permisos, las carpetas, etc.

Espero que a nadie más le pase !

Origen: Uploading Files – Getting Data from Users – The Definitive Guide to Yii 2.0

¡Mantengamos el contacto!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

¡MANTENGÁMONOS EN CONTACTO!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

Share to...