2010-05-11 51 views
24

tengo una página que quiero redirigir a que requiere de parámetros en la URL: http://www.example.com/myController/myAction/param1:val1/param2:val2Cake PHP redirigir a los parámetros de url

Sé que hay una CakePHP función de redireccionamiento para redireccionar que funciona de la siguiente manera:

$this->redirect(array("controller" => "myController", 
         "action" => "myAction", 
         $data_can_be_passed_here), 
       $status, $exit); 

¿Cómo agrego los parámetros que deseo como parte de la url usando la función anterior?

Creo que podría haber otro elemento que podría agregar a la matriz para que yo pueda pasar param1:val1 y param2:val2.

¡Cualquier ayuda sería muy apreciada!

Respuesta

48

No sé por qué no pude encontrar esto en la documentación de CakePHP, pero finalmente descubrí la solución. Lo estoy publicando aquí en caso de que alguien más tenga el mismo problema. (Si alguien sabe donde esta se encuentra en la documentación favor, puesto que así, gracias!)

para redirigir a la URL:

http://www.example.com/myController/myAction/param1:val1/param2:val2

que puede utilizar:

$this->redirect(array("controller" => "myController", 
         "action" => "myAction", 
         "param1" => "val1", 
         "param2" => "val2", 
         $data_can_be_passed_here), 
       $status, 
       $exit); 

Espero que ayude!

+0

Buen trabajo. Si no está en los documentos, puede registrarse y agregarlo a The CookBook usted mismo para que otros puedan beneficiarse. – webbiedave

+2

Cuando un método de Cake acepta una URL y usted transfiere una matriz, 'Router :: url()' se usa para obtener la representación de cadena del enlace (http://api.cakephp.org/class/router#method -Routerurl). Puede persistir en los parámetros nombrados de Cake a través de redirecciones o enlaces simplemente fusionándolos en la matriz de URL que pasa (por ejemplo, '$ this-> redirect (array_merge (array ('controller' => ...), $ this-> passedArgs)) ') – deizel

3

su lugar, puede utilizar este formato también

<?php 

$this->redirect('/controller/action/par1:par1/par2:par2/'); 


?> 

<?php 

$this->redirect('/controller/action/id/10/name/hello/'); 

?> 
17

Si necesita redirigir con obtener exactamente los parámetros, a continuación, pasar a '?' índice para $url matriz de argumentos:

$this->redirect(
    array(
      "controller" => "myController", 
      "action" => "myAction", 
      "?" => array(
       "param1" => "val1", 
       "param2" => "val2" 
     ), 
      $data_can_be_passed_here 
    ), 
    $status, 
    $exit 
); 

Se redirige a /myController/muAction/...?param1=val1&param2=val2

Esto es cierto al menos en CakePHP 1.3

+0

Funciona también para CakePHP 2.2.3. –

+0

Funcionó como un encanto en 2.4.6. Gracias. – usumoio

2

suelo hacer algo como esto: $this->redirect(['action' => 'view', $id, 'admins' => true]);

Espero que te ayude.