Archivos de Categoría: Symfony2 @es

Doctrine ORM: Excepción “Duplicate entry ‘2147483647’”

Estaba guardando IDs de perfiles de Facebook y Twitter cuando me apareció este error:

  [Doctrine\DBAL\Driver\PDOException]
  SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2147
  483647' for key 'PRIMARY'

  [PDOException]
  SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2147
  483647' for key 'PRIMARY'

Volví a mirar los datos de IDs que tenía y ninguno tenía el valor 2147483647. Entonces me dí cuenta de que el valor 2147483647 es el máximo valor que se puede guardar con un tipo de dato integer en Doctrine con MySQL. Así que con tan solo cambiar integer por bigint en la entidad se resolvió el problema.

class TwitterProfile
{
    /**
     * @ORM\Id
     * @ORM\Column(type="bigint")
     */
    protected $id;
    ...
}

doctrine-mysql-duplicate-entry-2147483647

Arreglar The parameter “debug.error_handler.throw_at” must be defined en Symfony2

Si te aparece el siguiente error al limpiar la cache de una aplicación Symfony2:

$ php app/console cache:clear --env=prod --no-debug 


[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException] The parameter "debug.error_handler.throw_at" must be defined.

La solución es: borrar el contenido de la carpeta de cache y hacer un warmup:

$ rm -rf app/cache/*
$ php app/console cache:warmup --env=prod

symfony-cache-clear

Ref: http://stackoverflow.com/a/27215486

Cómo arreglar la falta de colores para el Console Component de Symfony2

Después de actualizar de PHP 5.4 a PHP 5.6 ví que ya no se mostraban los colores al ejecutar comandos con el componente de consola.

symfony-console-component-no-colors

Esto pasó porque no había instalado la extensión php-poxis. Así que para solucionarlo sólo tuve que ejecutar este comando de Mac Ports:

$ sudo port install php56-posix

symfony-console-component-with-colors

Nota: Si tienes otra versión de PHP tan sólo cambia el número o no uses ninguno y pon sin más php-poxis.

Ref: http://serverfault.com/a/409966

Añadir coloreado de sintaxis para Twig en Sublime Text 2

  1. Selecciona la opción de menú “Preferences->Browse Packages…” para abrir la carpeta que contiene los paquetes de Sublime Text 2.
  2. Descárgate el contenido del repositorio Anomareh/PHP-Twig.tmbundle en una carpeta llamada PHP-Twig dentro de esa carpeta de paquetes.
  3. Mueve el contenido de la carpeta PHP-Twig/Syntaxes a la carpeta raíz PHP-Twig.
  4. Reinicia Sublime Text 2.

También puedes usar el terminal para hacer todo esto mediante git:

$ cd ~/.config/sublime-text-2/Packages/
$ git clone https://github.com/Anomareh/PHP-Twig.tmbundle.git PHP-Twig
$ mv PHP-Twig/Syntaxes/* PHP-Twig/

Una vez reiniciado verás una nueva opción llamada “HTML (Twig)” en el menú “View->Syntax”. Para colorear automáticamente los ficheros de extensión html.twig abre uno y selecciona “View->Syntax->Open all current extension as…->HTML (Twig)”.

HTML-Twig-Sublime-Text-2

Solucionar ‘A template that extends another one cannot have a body in …’ en Twig con Symfony2

Este es un error que puede resultar confuso al principio pero en realidad se explica por sí mismo. No se puede tener nada de contenido HTML en una plantilla Twig que extiende de otra, ni siquiera comentarios.

Twig_Error_Syntax

Así que por ejemplo esto provocaría el error:

<!-- src/Acme/DemoBundle/Resources/views/Default/index.html.twig -->
{% extends 'AcmeDemoBundle::layout.html.twig' %}

{% block stylesheets %}
  {{ parent() }}
  <link rel="stylesheet" href="{{ asset('bundles/demo/css/base.css') }}" type="text/css" media="all" />
{% endblock %}

La solución: eliminar el comentario HTML de la primera línea o usar comentarios de Twig:

{# src/Acme/DemoBundle/Resources/views/Default/index.html.twig #}
{% extends 'AcmeDemoBundle::layout.html.twig' %}

{% block stylesheets %}
  {{ parent() }}
  <link rel="stylesheet" href="{{ asset('bundles/demo/css/base.css') }}" type="text/css" media="all" />
{% endblock %}