bah c'est bon là ..
'id' => '96',
'key' => 'auleBDYMwq1VtaoeSbI7gr4QaWb95qBz'
quel est le soucis??
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
bah c'est bon là ..
'id' => '96',
'key' => 'auleBDYMwq1VtaoeSbI7gr4QaWb95qBz'
quel est le soucis??
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)
Kareylo ca ne change rien :(
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]+'));
Négatif antho07
Ce lien fonctionne: http://xxx.com/downloads/47/WSvkx0JLvYCuPZOQdvzRy3c6rxoeR4Zx ??
oui
Dans ton controller fait un debug($this->request) pour voir comment il parse ton url
'action' => 'files', ???
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 => ''
}
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
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
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
Pour info $this->Html->url est un alias de Router::url
Merci à tous de votre aide !
C'est réglé??
Possible, pour $this->Html->url, mes souvenirs de cake sont assez loin..
Oui c'est réglée...