URLs
como muchos otros frameworks, si estás usando el router con su comportamiento por defecto, hay una relación uno a uno entre una cadena URL y su correspondiente clase/método controlador. Los segmentos en una URI normalmente siguen este patrón:
example.com/controller/method/param
example.com/controller/method/param1/param2
Método por defecto
Cuando la URL se compone de una sola parte, correspondiente al nombre de un controlador, se llama automáticamente al método index del controlador :
URL :
example.com/Products
example.com/Products/index
Controller :
1class Products extends ControllerBase{
2 public function index(){
3 //Default action
4 }
5}
Parámetros requeridos
Si el método solicitado requiere parámetros, deben pasarse en la URL:
Controller :
1class Products extends ControllerBase{
2 public function display($id){}
3}
Valid Urls :
example.com/Products/display/1
example.com/Products/display/10/
example.com/Products/display/ECS
Parámetros opcionales
El método llamado puede aceptar parámetros opcionales.
Si un parámetro no está presente en la URL, se utiliza el valor por defecto del parámetro.
Controller :
class Products extends ControllerBase{
public function sort($field, $order='ASC'){}
}
Valid Urls :
example.com/Products/sort/name (uses "ASC" for the second parameter)
example.com/Products/sort/name/DESC
example.com/Products/sort/name/ASC
Se distingue entre mayúsculas y minúsculas
En los sistemas Unix, el nombre de los controladores distingue entre mayúsculas y minúsculas.
Controller :
class Products extends ControllerBase{
public function caseInsensitive(){}
}
Urls :
example.com/Products/caseInsensitive (valid)
example.com/Products/caseinsensitive (valid because the method names are case insensitive)
example.com/products/caseInsensitive (invalid since the products controller does not exist)
Personalización de rutas
El Enrutador (Router) y las anotaciones/atributos en las clases de controlador permiten personalizar las URL.