2010-07-17 28 views
5

En mi aplicación Cake tengo un controlador "completed_projects". Su acción de índice no toma argumentos y enumera algunos proyectos. Diferentes páginas se puede acceder por example.com/completed_projects/index/page:23 etc.Configuración de rutas para argumentos con nombre en CakePHP

quiero hacer como el de la URL siguiente:

example.com/portfolio/page23 

Obviamente tengo que hacer algunas rutas para esto. He probado muchos de ellos les gusta:

Router::connect('/portfolio/page:num', array('controller' => 'completed_projects', 'action' => 'index'), array('pass'=>'page:num', 'num'=>'[0-9]+')); 

y también:

Router::connect('/portfolio/:page:num', array('controller' => 'completed_projects', 'action' => 'index'), array('named'=>'num', 'page'=>'page', 'num'=>'[0-9]+')); 

También probé modificar una y otra vez, pero ninguno de ellos funciona bien.

Estoy usando CakePHP 1.3. Cualquier ayuda será apreciada.

Respuesta

1
Router::connect('/portfolio/page:page_num', 
    array('controller'=>'completed_projects', 'action'=>'index'), 
    array('page_num'=>'[\d]+') 
); 

En su controlador, el acceso page_num con:

$this->params['page_num']; 
+0

Esto pasa page_num (como 23) a la acción, pero quiero que un parámetro llamado se pasó como página: se pasa 2. Gracias por considerar ayudar de todos modos. –

+0

Lo siento, actualicé la respuesta para satisfacer sus necesidades, afortunadamente :) – Oscar

+0

Gracias de nuevo Oscar. ¿Podría por favor explicar cómo esta (o cualquier) variable se usa para la paginación? Obtener solo una variable pasada en el controlador no es un requisito. Quiero que se llame argumento (como página: 33) para que pueda usarse para paginación. ¿Es posible? –

Cuestiones relacionadas