Bonjour,
dans mon fichiers routes.php j'ai
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'accueil'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('/downloads/:id/:key',
array(
'controller' => 'panels',
'action' => 'downloads'
),
array(
'pass'=>array('id','key'),
'id' => '[0-9]+'
)
);
Router::connect('/panels', array('controller' => 'panels', 'action' => 'profile'));
dans ma view je fait la commande
$this->Html->url(array('controller' => 'panels', 'action' => 'downloads', 47, "WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx"),true)
pour avoir l'url de téléchargement mais ma règle de routage n'est pas pris en compte.
J’obtiens : http://xxx.com/panels/downloads/47/WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx
Alors que l'url que je veux est : http://xxx.com/downloads/47/WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx
Que dois-je faire
Merci
Bizarre cela fonctionne chez moi:
Router::connect('/downloads/:id/:key',
array(
'controller' => 'panels',
'action' => 'downloads'
),
array(
'pass'=>array('id','key'),
'id' => '[0-9]+',
'key' => '[a-zA-Z0-9]+'
)
);
echo Router::url(array('controller' => 'panels', 'action' => 'downloads', 'id'=>45, 'key'=>'WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx'));
affiche bien /projet/downloads/45/WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx
Je pense que ce tuto vidéo devrait t'aider non ?
http://www.grafikart.fr/tutoriels/cakephp/routing-cakephp-103
$this->Html->url(array('controller' => 'panels', 'action' => 'downloads', 'id' => 47, 'key' => "WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx"),true)
En plus d'utiliser le code de Kareylo, il faut que tu précises à ton Router à quoi doit ressembler la clé Key
Router::connect('/downloads/:id/:key',
array(
'controller' => 'panels',
'action' => 'downloads'
),
array(
'pass'=>array('id','key'),
'id' => '[0-9]+',
'key' => '[a-zA-Z0-9]+'
)
);
Bon ca ne marche toujours pas voici mon tableau d'argument pour $this->Html->url
array('controller' => 'panels', 'action' => 'downloads', 'id'=>45, 'key'=>'WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx')
Et mon ficher routes.php
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'accueil'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('/downloads/:id/:key', array(
'controller' => 'panels',
'action' => 'downloads'
), array(
'pass' => array('id', 'key'),
'id' => '[0-9]+',
'key' => '[a-zA-Z0-9]+'
)
);
Router::connect('/panels', array('controller' => 'panels', 'action' => 'profile'));
CakePlugin::routes();
require CAKE . 'Config' . DS . 'routes.php';
Merci beaucoup de votre aide
Est-ce que ta fonction downloads est bien comme ceci ?
public function downloads($id = null, $key = null){
...
}
public function downloads($id, $key) { ... }
Je tiens a préciser: que lorsque j'écris l'url à la main http://xxx.com/downloads/47/WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx cela fonctionne mais avec la fonction $this->Html->url() il me donne : http://xxx.com/panels/downloads/47/WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx
@Kareylo si tu as besoin d'autre partie de mon comme tu n'as qu'a demander :D
PS: Merci de ton aide !
Bonsoir, tente ça:
$this->Html->url(array("controler"=> truc, 'action'=>truc, array('id machin choutte), 'panels' => false)
Négatif antho07
Autre précision ce code
Router::connect('/downloads/*',array('controller' => 'panels','action' => 'downloads'));
me donnais bien mon lien .../downloads/47/hakjahskdjhas mais il ne vérifie pas si 47 est bien un chiffre...
PS: voici le debug du tableau push dans la function:
array (size=4)
'controller' => string 'panels' (length=6)
'action' => string 'downloads' (length=9)
'id' => int 94
'key' => string 'B4v95mNlzZFKt4PPfLJikrpzmvvLjgnX' (length=32)
Gilbert
Ah mais ok ya du routing...
et ça: ?
Router::connect('/downloads/:id/:key',array('controller'=>'panels','action'=>'downloads'),array('pass'=>array('id','key'),'id'=>'[0-9]+','key'=>'[0-9a-zA-Z]+'));
oups pas le bon debug :D
http://xxx.com/bob/panels/downloads/96/auleBDYMwq1VtaoeSbI7gr4QaWb95qBz
object(CakeRequest) {
params => array(
'plugin' => null,
'controller' => 'panels',
'action' => 'downloads',
'named' => array(),
'pass' => array(
(int) 0 => '96',
(int) 1 => 'auleBDYMwq1VtaoeSbI7gr4QaWb95qBz'
),
'isAjax' => false
)
data => array()
query => array()
url => 'panels/downloads/96/auleBDYMwq1VtaoeSbI7gr4QaWb95qBz'
base => '/bob'
webroot => '/bob/'
here => '/bob/panels/downloads/96/auleBDYMwq1VtaoeSbI7gr4QaWb95qBz'
[protected] _detectors => array(
'get' => array(
'env' => 'REQUEST_METHOD',
'value' => 'GET'
),
'post' => array(
'env' => 'REQUEST_METHOD',
'value' => 'POST'
),
'put' => array(
'env' => 'REQUEST_METHOD',
'value' => 'PUT'
),
'delete' => array(
'env' => 'REQUEST_METHOD',
'value' => 'DELETE'
),
'head' => array(
'env' => 'REQUEST_METHOD',
'value' => 'HEAD'
),
'options' => array(
'env' => 'REQUEST_METHOD',
'value' => 'OPTIONS'
),
'ssl' => array(
'env' => 'HTTPS',
'value' => (int) 1
),
'ajax' => array(
'env' => 'HTTP_X_REQUESTED_WITH',
'value' => 'XMLHttpRequest'
),
'flash' => array(
'env' => 'HTTP_USER_AGENT',
'pattern' => '/^(Shockwave|Adobe) Flash/'
),
'mobile' => array(
'env' => 'HTTP_USER_AGENT',
'options' => array(
(int) 0 => 'Android',
(int) 1 => 'AvantGo',
(int) 2 => 'BlackBerry',
(int) 3 => 'DoCoMo',
(int) 4 => 'Fennec',
(int) 5 => 'iPod',
(int) 6 => 'iPhone',
(int) 7 => 'iPad',
(int) 8 => 'J2ME',
(int) 9 => 'MIDP',
(int) 10 => 'NetFront',
(int) 11 => 'Nokia',
(int) 12 => 'Opera Mini',
(int) 13 => 'Opera Mobi',
(int) 14 => 'PalmOS',
(int) 15 => 'PalmSource',
(int) 16 => 'portalmmm',
(int) 17 => 'Plucker',
(int) 18 => 'ReqwirelessWeb',
(int) 19 => 'SonyEricsson',
(int) 20 => 'Symbian',
(int) 21 => 'UP\.Browser',
(int) 22 => 'webOS',
(int) 23 => 'Windows CE',
(int) 24 => 'Windows Phone OS',
(int) 25 => 'Xiino'
)
),
'requested' => array(
'param' => 'requested',
'value' => (int) 1
)
)
[protected] _input => ''
}
http://xxx.com/bob/downloads/96/auleBDYMwq1VtaoeSbI7gr4QaWb95qBz
object(CakeRequest) {
params => array(
'plugin' => null,
'controller' => 'panels',
'action' => 'downloads',
'named' => array(),
'pass' => array(
(int) 0 => '96',
(int) 1 => 'auleBDYMwq1VtaoeSbI7gr4QaWb95qBz'
),
'id' => '96',
'key' => 'auleBDYMwq1VtaoeSbI7gr4QaWb95qBz',
'isAjax' => false
)
data => array()
query => array()
url => 'downloads/96/auleBDYMwq1VtaoeSbI7gr4QaWb95qBz'
base => '/bob'
webroot => '/bob/'
here => '/bob/downloads/96/auleBDYMwq1VtaoeSbI7gr4QaWb95qBz'
[protected] _detectors => array(
'get' => array(
'env' => 'REQUEST_METHOD',
'value' => 'GET'
),
'post' => array(
'env' => 'REQUEST_METHOD',
'value' => 'POST'
),
'put' => array(
'env' => 'REQUEST_METHOD',
'value' => 'PUT'
),
'delete' => array(
'env' => 'REQUEST_METHOD',
'value' => 'DELETE'
),
'head' => array(
'env' => 'REQUEST_METHOD',
'value' => 'HEAD'
),
'options' => array(
'env' => 'REQUEST_METHOD',
'value' => 'OPTIONS'
),
'ssl' => array(
'env' => 'HTTPS',
'value' => (int) 1
),
'ajax' => array(
'env' => 'HTTP_X_REQUESTED_WITH',
'value' => 'XMLHttpRequest'
),
'flash' => array(
'env' => 'HTTP_USER_AGENT',
'pattern' => '/^(Shockwave|Adobe) Flash/'
),
'mobile' => array(
'env' => 'HTTP_USER_AGENT',
'options' => array(
(int) 0 => 'Android',
(int) 1 => 'AvantGo',
(int) 2 => 'BlackBerry',
(int) 3 => 'DoCoMo',
(int) 4 => 'Fennec',
(int) 5 => 'iPod',
(int) 6 => 'iPhone',
(int) 7 => 'iPad',
(int) 8 => 'J2ME',
(int) 9 => 'MIDP',
(int) 10 => 'NetFront',
(int) 11 => 'Nokia',
(int) 12 => 'Opera Mini',
(int) 13 => 'Opera Mobi',
(int) 14 => 'PalmOS',
(int) 15 => 'PalmSource',
(int) 16 => 'portalmmm',
(int) 17 => 'Plucker',
(int) 18 => 'ReqwirelessWeb',
(int) 19 => 'SonyEricsson',
(int) 20 => 'Symbian',
(int) 21 => 'UP\.Browser',
(int) 22 => 'webOS',
(int) 23 => 'Windows CE',
(int) 24 => 'Windows Phone OS',
(int) 25 => 'Xiino'
)
),
'requested' => array(
'param' => 'requested',
'value' => (int) 1
)
)
[protected] _input => ''
}
bah c'est bon là ..
'id' => '96',
'key' => 'auleBDYMwq1VtaoeSbI7gr4QaWb95qBz'
quel est le soucis??
C'est la fonctions $this->Html->url qui ne me l'écrit pas comme il faut elle me met http://xxx.com/bob/panels/downloads/96/auleBDYMwq1VtaoeSbI7gr4QaWb95qBz au lieu de http://xxx.com/bob/downloads/96/auleBDYMwq1VtaoeSbI7gr4QaWb95qBz
Ah bah j'avais pas fait attention...
Il ne faut pas utiliser la fonction url du helper html qui elle va te fabriquer une url avec les paramètres que tu lui donnes (du moins je pense au vu du résultat)
mais la fonction url de la classe static Router
qu'on appelle comme cela: Router::url