CakePHP中的base_url

Mus*_*usa 37 php cakephp

在大多数Web应用程序中,我们需要全局var base_url.在cakephp中获取base_url目前我将以下代码放在app_controller.php中的beforeRender方法中

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

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

Rab*_*ire 70

就在这里.在您看来,您可以访问:

<?php echo $this->webroot; ?>
Run Code Online (Sandbox Code Playgroud)

此外,您的主机信息存储在$_SERVER['HTTP_HOST']变量中,以备不时之需.

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

Router::url('/', true);
Run Code Online (Sandbox Code Playgroud)


Sub*_*axe 28

使用下面的任何选项

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

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

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

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

  5. 在Config/core.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;
    } 
}
?>
Run Code Online (Sandbox Code Playgroud)

并在项目的任何地方使用

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

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

不要忘记在控制器中包含Common helper

我推荐方法2和5,因为它们提供了完整的URL.


Kee*_*ara 10

你可以用

<?php echo Router::fullbaseUrl();?>
Run Code Online (Sandbox Code Playgroud)

同样.

有关详细信息,请参阅http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html.


dec*_*eze 9

Router::url('/', true)在应用中的任何位置使用.
特别是在View中,您可以使用$this->Html->url('/', true)(或任何其他Helper,事实上,该Helper::url方法由所有Helpers继承),这只是上述Router方法的包装器.

在任何一种情况下,第二个true参数都会使它返回完整的URL.