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 :

app/controllers/Products.php
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 :

app/controllers/Products.php
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 :

app/controllers/Products.php
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 :

app/controllers/Products.php
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.