在大多数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
使用下面的任何选项
<?php echo $this->Html->url('/');?>
<?php Router::url('/', true); ?>
<?php echo $this->base;?>
<?php echo $this->webroot; ?>
在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.
Router::url('/', true)在应用中的任何位置使用.
特别是在View中,您可以使用$this->Html->url('/', true)(或任何其他Helper,事实上,该Helper::url方法由所有Helpers继承),这只是上述Router方法的包装器.
在任何一种情况下,第二个true参数都会使它返回完整的URL.