Comment faites-vous l'écho courant de l'URL dans la Gâteau de vue?
Réponses
Trop de publicités?Je préfère cela, car si je ne parle pas de "demande" mot, mon IDE donne l'avertissement.
<?php echo $this->request->here; ?>
API Document: http://api.cakephp.org/2.3/class-CakeRequest.html#_here
Edit: Afin de clarifier toutes les options
Current URL: http://example.com/en/controller/action/?query=12
// Router::url(null, true)
http://example.com/en/controller/action/
// Router::url(null, false)
/en/controller/action/
// $this->request->here
/en/controller/action/
// $this->request->here()
/en/controller/action/?query=12
// $this->request->here(false)
/en/controller/action/?query=12
// $this->request->url
en/controller/action
// $_SERVER["REQUEST_URI"]
/en/controller/action/?query=12
// strtok($_SERVER["REQUEST_URI"],'?');
/en/controller/action/
La suite de "Gâteau à la manière" est utile, car vous pouvez prendre le plein courant d'URL et de modifier des pièces de sans manuellement afin d'analyser l' $_SERVER[ 'REQUEST_URI' ]
chaîne de caractères manuellement, puis concaténer dans une url valide pour la sortie.
Tout le courant de l'url:Router::reverse($this->request, true)
Modifier facilement des parties spécifiques de l'url actuelle:
1) faire une copie de Gâteau à la demande de l'objet:
$request_copy = $this->request
2) Puis modifiez $request_copy->params
et/ou $request_copy->query
tableaux
3) Enfin: $new_url = Router::reverse($request_copy, true)
.
Je sais que ce post est un peu daté, et CakePHP versions ont prospéré depuis. Dans le courant (2.1.x) la version de CakePHP, et même dans 1.3.x si je ne me trompe pas, on peut obtenir le régulateur de courant/affichage de l'url comme ceci:
$this->params['url'];
Bien que cette méthode ne renvoie PAS de paramètres, il est très pratique si vous voulez ajouter des paramètres à une de lien lors de la construction de nouvelles URL. Par exemple, nous avons de l'actuel de l'adresse URL:
projets/modifier/6
Et nous voulons ajouter un paramètre personnalisé d'action appelé c_action avec une valeur de remove_image, on peut utiliser l' $this->params['url];
et de fusionner avec un tableau de paramètres personnalisés paires clé => valeur:
echo $this->Html->link('remove image', array_merge($this->params['url'], array('c_action' => 'remove_image'));
À l'aide de la méthode ci-dessus, nous sommes en mesure d'ajouter notre paramètres personnalisés pour le lien et de ne pas causer une longue chaîne sur les paramètres pour construire l'URL, parce que $this->params['url] ne jamais renvoie le controll URL de l'action.
Dans l'exemple ci-dessus, nous aurions besoin d'ajouter manuellement l'ID de 6 à revenir dans l'URL, donc perahaps le maillon final de construire serait comme ceci:
echo $this->Html->link('remove image', array_merge($this->params['url'], array($id,'c_action' => 'remove_image'));
Où $est est l'ID du projet et vous avez affecté à la variable $id au niveau du contrôleur. La nouvelle adresse sera:
projets/modifier/6/c_action:remove_image
Désolé si cela a le moindre non, mais j'ai couru à travers cette question lors de la recherche d'une méthode pour y parvenir et pensé que d'autres puissent en bénéficier.