base_url在蛋糕PHP

2022-08-30 12:46:41

在大多数Web应用程序中,我们需要全局变量base_url。在cakephp中,为了获得base_url目前我把下面的代码放在app_controller.php

function beforeRender(){
    $this->set('base_url', 'http://'.$_SERVER['SERVER_NAME'].Router::url('/'));
}

还有其他选择吗?意味着是否有任何全局变量可用于获取基本 URL 而不是这个?


答案 1

是的,有。在您看来,您可以访问:

<?php echo $this->webroot; ?>

此外,您的主机信息存储在变量中,以防万一。$_SERVER['HTTP_HOST']

在控制器中,如果您想要完整的 URL,请使用以下命令:

Router::url('/', true);

答案 2

使用下面的任何人选项

  1. <?php echo $this->Html->url('/');?>

  2. <?php Router::url('/', true); ?>

  3. <?php echo $this->base;?>

  4. <?php echo $this->webroot; ?>

  5. 在配置/核心中定义常量.php,并在项目中的任何位置使用define("BASE_URL", "www.yoursite.com/");BASE_URL

并使用以下函数创建一个通用助手

<?php
class CommonHelper extends AppHelper {

    function get_url($url){
        return BASE_URL.$url;
    }

    function get_src($url){
        echo BASE_URL.$url;
    } 
}
?>

并在项目中的任何位置使用

$this->redirect($this->Common->get_url("login");

<a href="<?php $this->Common->get_src('users/login');?>">login</a>

不要忘记在控制器中包含常用助手

我推荐方法2和5,因为它们给出了完整的url。


推荐