Nette Documentation Preview

syntax
Actualización
*************


Actualización a la versión 3.4
==============================

La versión mínima de PHP requerida es la 8.3.

- el método `Request::isSameSite()` está obsoleto en favor de `isFrom()`, que determina el origen de la petición a partir de las cabeceras `Sec-Fetch-*`. La protección automática de los formularios y las señales se vuelve más precisa y cambia un comportamiento: la navegación directa (un marcador, una dirección escrita a mano, un enlace en un correo) ya no se considera same-site. Si una señal depende de enlaces de acción en correos, márquela con `#[Requires(sameOrigin: false)]`.
- la cookie `_nss` se envía ahora solo a los navegadores que no envían la cabecera `Sec-Fetch-Site`
- `setCookie()` envía el atributo `Max-Age` y fuerza la bandera `Secure` en las cookies con `SameSite=None` y en las particionadas
- el enum `SameSite` sustituye a las constantes `IResponse::SameSiteLax` etc., que quedan obsoletas
- la expiración se interpreta igual en todas partes: un número es un número relativo de segundos, una cadena es un intervalo o una fecha. Pasar un timestamp UNIX absoluto está obsoleto y una cookie de sesión se representa con `null` en lugar de `0`.
- el método obsoleto `Request::getRemoteHost()` devuelve `null`
- se ha eliminado la clase, obsoleta desde hace tiempo, `Nette\Http\UserStorage`

Toda la historia del cambio a las cabeceras `Sec-Fetch-*` se cuenta en el artículo [Quarter Century of CSRF |https://blog.nette.org/en/quarter-century-of-csrf].


Actualización a la versión 3.2
==============================

- las credenciales de la autenticación HTTP Basic ya no forman parte del objeto `Url`, así que `$url->getUser()` y `$url->getPassword()` devuelven una cadena vacía. Léalas con el nuevo método `$request->getBasicCredentials()`.

Los motivos de este cambio se explican en el artículo [Nette Http 3.2: change access to credentials |https://blog.nette.org/en/nette-http-3-2-change-access-to-credentials].


Actualización a la versión 3.1
==============================

- las cookies se envían con la bandera `sameSite: Lax`
- `cookieSecure` tiene ahora el valor predeterminado 'auto'
- la opción `session.cookieSecure` está obsoleta; en su lugar se usa `http.cookieSecure`
- la cookie `nette-samesite` se ha renombrado a `_nss`
- `Nette\Http\Request::getFile()` acepta un array de claves y devuelve `FileUpload|null`
- `Nette\Http\Session::getCookieParameters()` está obsoleto
- `Nette\Http\FileUpload::getName()` se ha renombrado a `getUntrustedName()`
- `Nette\Http\Url`: `getBasePath()`, `getBaseUrl()` y `getRelativeUrl()` están obsoletos (estos métodos forman parte de `UrlScript`)
- `Nette\Http\Response::$cookieHttpOnly` está obsoleto
- `Nette\Http\FileUpload::getImageSize()` devuelve el par `[width, height]`
- con `autoStart: smart` (el valor predeterminado), la sesión ya no se inicia justo después de arrancar la aplicación solo porque el navegador haya enviado una cookie de sesión; se inicia en la primera lectura o escritura. Se han añadido los valores `always` y `never`.
- cuando el navegador envía un ID de sesión para el que no existe ninguna sesión, Nette borra la cookie en lugar de crear una sesión nueva
- para acceder a las secciones de la sesión prefiera los métodos `set()`, `get()` y `remove()`; a diferencia del acceso por propiedad, distinguen correctamente la lectura de la escritura y no inician la sesión innecesariamente
- los valores predeterminados de `cookiePath` y `cookieDomain` se pueden establecer en la configuración

El comportamiento de las sesiones se describe en detalle en el artículo [Nette Http 3.1: much smarter sessions |https://blog.nette.org/en/nette-http-3-1-much-smarter-sessions].


Actualización a la versión 3.0
==============================

- el objeto `Nette\Http\UrlScript` (que devuelve, por ejemplo, `Nette\Http\Request::getUrl()`) es ahora inmutable
- en `new Nette\Http\Url('abcd')`, `abcd` representa la ruta, no el dominio; desde la 3.0, `(new Nette\Http\Url('abcd'))->setScheme('http')` genera correctamente `http:abcd` en lugar del anterior `http://abcd`

Actualización

Actualización a la versión 3.4

La versión mínima de PHP requerida es la 8.3.

  • el método Request::isSameSite() está obsoleto en favor de isFrom(), que determina el origen de la petición a partir de las cabeceras Sec-Fetch-*. La protección automática de los formularios y las señales se vuelve más precisa y cambia un comportamiento: la navegación directa (un marcador, una dirección escrita a mano, un enlace en un correo) ya no se considera same-site. Si una señal depende de enlaces de acción en correos, márquela con #[Requires(sameOrigin: false)].
  • la cookie _nss se envía ahora solo a los navegadores que no envían la cabecera Sec-Fetch-Site
  • setCookie() envía el atributo Max-Age y fuerza la bandera Secure en las cookies con SameSite=None y en las particionadas
  • el enum SameSite sustituye a las constantes IResponse::SameSiteLax etc., que quedan obsoletas
  • la expiración se interpreta igual en todas partes: un número es un número relativo de segundos, una cadena es un intervalo o una fecha. Pasar un timestamp UNIX absoluto está obsoleto y una cookie de sesión se representa con null en lugar de 0.
  • el método obsoleto Request::getRemoteHost() devuelve null
  • se ha eliminado la clase, obsoleta desde hace tiempo, Nette\Http\UserStorage

Toda la historia del cambio a las cabeceras Sec-Fetch-* se cuenta en el artículo Quarter Century of CSRF.

Actualización a la versión 3.2

  • las credenciales de la autenticación HTTP Basic ya no forman parte del objeto Url, así que $url->getUser() y $url->getPassword() devuelven una cadena vacía. Léalas con el nuevo método $request->getBasicCredentials().

Los motivos de este cambio se explican en el artículo Nette Http 3.2: change access to credentials.

Actualización a la versión 3.1

  • las cookies se envían con la bandera sameSite: Lax
  • cookieSecure tiene ahora el valor predeterminado ‚auto‘
  • la opción session.cookieSecure está obsoleta; en su lugar se usa http.cookieSecure
  • la cookie nette-samesite se ha renombrado a _nss
  • Nette\Http\Request::getFile() acepta un array de claves y devuelve FileUpload|null
  • Nette\Http\Session::getCookieParameters() está obsoleto
  • Nette\Http\FileUpload::getName() se ha renombrado a getUntrustedName()
  • Nette\Http\Url: getBasePath(), getBaseUrl() y getRelativeUrl() están obsoletos (estos métodos forman parte de UrlScript)
  • Nette\Http\Response::$cookieHttpOnly está obsoleto
  • Nette\Http\FileUpload::getImageSize() devuelve el par [width, height]
  • con autoStart: smart (el valor predeterminado), la sesión ya no se inicia justo después de arrancar la aplicación solo porque el navegador haya enviado una cookie de sesión; se inicia en la primera lectura o escritura. Se han añadido los valores always y never.
  • cuando el navegador envía un ID de sesión para el que no existe ninguna sesión, Nette borra la cookie en lugar de crear una sesión nueva
  • para acceder a las secciones de la sesión prefiera los métodos set(), get() y remove(); a diferencia del acceso por propiedad, distinguen correctamente la lectura de la escritura y no inician la sesión innecesariamente
  • los valores predeterminados de cookiePath y cookieDomain se pueden establecer en la configuración

El comportamiento de las sesiones se describe en detalle en el artículo Nette Http 3.1: much smarter sessions.

Actualización a la versión 3.0

  • el objeto Nette\Http\UrlScript (que devuelve, por ejemplo, Nette\Http\Request::getUrl()) es ahora inmutable
  • en new Nette\Http\Url('abcd'), abcd representa la ruta, no el dominio; desde la 3.0, (new Nette\Http\Url('abcd'))->setScheme('http') genera correctamente http:abcd en lugar del anterior http://abcd