Actualizar composer.json a Laravel 13 y aplicar la guía oficial: PreventRequestForgery
Hola, bienvenido. En esta lección vamos a actualizar el proyecto de Laravel 12 a Laravel 13. Con PHP 8.3, Pest 4 y Tinker 3 ya instalados, basta con cambiar una línea del archivo composer.json: ^12.0 pasa a ^13.0. Después revisaremos la guía oficial, y de todo lo que cambia a nuestro código solo le afecta una cosa: el middleware de CSRF, que pasa a llamarse PreventRequestForgery.
Laravel 13 en composer.json
Como vimos con composer why-not en la lección 2, el resto de paquetes ya admite Laravel 13, así que vamos a cambiar solo la restricción de laravel/framework en composer.json:
Vamos a resolver las dependencias con -W, como en las 2 lecciones anteriores. Esta es la salida el 21 de octubre de 2026 (las versiones serán más nuevas cuando lo lances tú):
4 paquetes, y los 4 llegan por Laravel:
- Laravel 13.38, la última versión de la rama 13.x ese día, sin avisos de seguridad.
symfony/polyfill-php86, una dependencia nueva que añade a PHP 8.3 lo que llegará con PHP 8.6, como la funciónclamp(), la funcióngrapheme_strrev()o la constanteARRAY_FILTER_USE_VALUE. Solo las define si PHP no las tiene ya.brick/math1.0 yguzzlehttp/uri-template2. Laravel ya las usaba, la primera para los casts decimales de Eloquent y la segunda para las URL con parámetros del cliente HTTP, y Laravel 13 admite sus versiones major nuevas, así que-Wlas actualiza.
La guía oficial avisa de otro polyfill, symfony/polyfill-php85, que define funciones globales como array_first() y array_last() y que puede entrar en conflicto con helpers propios que se llamen igual. La guía lo presenta como una dependencia nueva de Laravel 13, pero en la salida no aparece porque ya estaba instalado: las últimas versiones de Laravel 12, como la 12.70, ya lo instalan. Y el proyecto no define funciones con esos nombres ni con los de polyfill-php86: si buscas function array_first, function array_last o function clamp en app/, routes/, database/ y tests/, no encuentras nada.
Vamos a comprobar con qué versión arranca el proyecto:
Laravel 13 sobre PHP 8.3, sin haber cambiado una línea de código. Vamos a lanzar composer qa para comprobar que todo sigue en verde:
Los tests en verde nos dicen que nada ha dejado de funcionar, pero ¿qué ha cambiado en el framework? Eso lo cuenta la guía oficial.
- 02Qué cambios de la guía de Laravel 13 afectan al proyecto
- 03VerifyCsrfToken pasa a llamarse PreventRequestForgery
- 04preventRequestForgery() en bootstrap/app.php
- 05ValidateCsrfToken en config/sanctum.php: obsoleta, pero sin aviso
- 06Qué puede bloquear la comprobación de origen
- 07composer qa en verde y el commit