Dans la plupart des applications Web, nous avons besoin de la variable var base_url. Dans cakephp pour obtenir base_url actuellement, je mets le code suivant sur la méthode beforeRender dans app_controller.php
function beforeRender(){
$this->set('base_url', 'http://'.$_SERVER['SERVER_NAME'].Router::url('/'));
}
Y a-t-il une alternative? Signifie-t-il une variable globale disponible pour obtenir l'URL de base plutôt que cela?
Oui il y a. Selon vous, vous pouvez accéder à:
<?php echo $this->webroot; ?>
De plus, vos informations d'hôte sont stockées dans le $_SERVER['HTTP_Host']
variable au cas où vous le voudriez.
Dans votre contrôleur, si vous voulez des URL complètes, utilisez ceci:
Router::url('/', true);
Utilisez l'option n'importe qui ci-dessous
<?php echo $this->Html->url('/');?>
<?php Router::url('/', true); ?>
<?php echo $this->base;?>
<?php echo $this->webroot; ?>
Définissez la constante dans Config/core.php comme define("BASE_URL", "www.yoursite.com/");
et utilisez BASE_URL
N'importe où dans votre projet
et créer un assistant commun avec les fonctions suivantes
<?php
class CommonHelper extends AppHelper {
function get_url($url){
return BASE_URL.$url;
}
function get_src($url){
echo BASE_URL.$url;
}
}
?>
et utiliser n'importe où dans le projet
$this->redirect($this->Common->get_url("login");
<a href="<?php $this->Common->get_src('users/login');?>">login</a>
N'oubliez pas d'inclure l'assistant commun dans le contrôleur
Je recommande les méthodes 2 et 5 car elles donnent une URL complète.
Vous pouvez utiliser
<?php echo Router::fullbaseUrl();?>
ainsi que.
Reportez-vous http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html pour plus de détails.
Utilisez Router::url('/', true)
n'importe où dans votre application.
Plus précisément dans la vue, vous pouvez utiliser $this->Html->url('/', true)
(ou tout autre Helper en fait, le Helper::url
est héritée par tous les Helpers), qui n'est qu'un wrapper pour la méthode Router
ci-dessus.
Dans les deux cas, le second paramètre true
lui fait renvoyer l'URL complète.
Dans la plupart des cas, je suggère d'utiliser CakePHP HtmlHelper pour générer des URL, de cette façon, vous n'aurez pas à vous soucier de l'URL de base. Le moyen le plus convivial d'obtenir l'URL de base dans votre vue, cependant, serait <?php echo $html->webroot; ?>
.
Vous pouvez utiliser Router::fullBaseUrl()
Si vous avez par exemple example.com/test et que vous souhaitez ignorer/tester, vous pouvez utiliser 'full' => false. De plus, si vous voulez forcer ssl, vous pouvez ajouter '_ssl' => true.
c'est à dire.
Router::fullBaseUrl(null, [ '_ssl' => true, 'full' => false]
Assurez-vous de passer null comme premier paramètre car il s'agit de l'URL de base au cas où vous voudriez le passer.
remarque: vous devez importer le routeur pour pouvoir utiliser la fonction ci-dessus:
use Cake\Routing\Router
Vous pouvez utiliser FULL_BASE_URL
constant.