【问题标题】:How to get Kohana base_url in template如何在模板中获取 Kohana base_url
【发布时间】:2011-04-16 17:12:47
【问题描述】:

在Kohana 3中bootstrap.php可以定义base_url:

Kohana::init(array(
    'base_url'   => '/foo/',
));

这通常意味着还将/js/、/css/ 和其他媒体移动到该基本目录,例如/foo/js/、/foo/css/。我的问题不是讨论这样的好坏。

Kohana 中是否有一种 内置 方法可以从 模板 访问 base_url(就像在 Django 中一样 em> 你可以用{{ MEDIA_URL }}css/)?

【问题讨论】:

    标签: php templates kohana base-url


    【解决方案1】:

    您可以使用URL::base 输出基本网址:

    <?php echo URL::base(); ?>
    

    如果你输出一个相对于你可能想要URL::site的url:

    <?php echo URL::site('css/'); ?>
    

    Kohana 3 模板控制器使用 View 类来呈现模板。 视图是普通的 php 文件,没有特殊的语法,所以只需使用上面的普通 &lt;?php ... ?&gt; 标签。 View 类允许您在渲染之前声明用于该视图的变量。

    【讨论】:

    • 我的站点位于域根目录中,/index.php/ URL 部分被隐藏(众所周知的方式)。 URL::base() 提供/ 和URL::site() 提供/index.php/ - 我想说这些没什么用......
    • 我发现URL::site('myfolder', 'http'); 几乎可以满足我的需要,但它仍然添加了/index.php/,这会阻止一切。我需要像http://example.com/myfolder/ 这样的liik,但它给了我http://example.com/index.php/myfolder/
    • 这是由于您在应用程序配置/引导程序中配置了“index_file”选项。见:kohanaframework.org/3.0/guide/kohana/tutorials/clean-urls
    【解决方案2】:

    一个好方法是在你的布局视图中,在你放在&lt;title&gt;标签附近的HTML的头部:

    <base href="<?php echo URL::base(TRUE) ?>">
    

    然后,您以这种方式加载资产:

    <img src="assets/images/img.jpg" alt="">
    

    HTML &lt;base&gt; 标记是一种为页面中的所有资产定义基本 URL 的方法。这样您就可以加载位于/foo/assets/images/img.jpg 的图像,而无需在每个标签中调用URL::base()。希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 2012-11-27
      • 2015-02-20
      • 2013-06-11
      相关资源
      最近更新 更多