2010-09-24 72 views
0

的Kohana 3bootstrap.php可以定義base_url如何獲得的Kohana BASE_URL模板

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

這通常意味着也移動/js//css/等媒體到基地類似DIR /foo/js//foo/css/。我的問題不是討論這樣的好壞。

是否有內置在Kohana中方式從模板(就像在Django的可以使用{{ MEDIA_URL }}css/)訪問BASE_URL

回答

6

您可以輸出的基本網址爲使用URL::base

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

如果你相對的URL,你可能想URL::site輸出:

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

的Kohana 3模板控制器使用視圖類來呈現模板。 視圖是正常的php文件,並沒有特殊的語法,所以只需使用正常<?php ... ?>標籤如上。 View類允許您在渲染它之前聲明在該視圖中使用的變量。

+0

我的網站被放置在域根目錄中,隱藏了「/ index.php /」URL部分(衆所周知的方式)。 'URL :: base()'給出'/'和'URL :: site()'給出'/ index.php /' - 這些都沒什麼用處,我會說... – Ivan 2014-02-19 02:47:50

+0

我發現'URL :: site('myfolder','http');'幾乎可以滿足我的需求,但它還是增加了'/ index.php /',它可以將所有內容都剎住。我需要的東西就像'http:// example.com/myfolder /',但它給了我'http:// example.com/index.php/myfolder /' – Ivan 2014-02-19 02:53:12

+0

這是由於你配置了'index_file'選項在您的應用程序配置/引導程序中。請參閱:http://kohanahanaworkwork.org/3.0/guide/kohana/tutorials/clean-urls – Lethargy 2014-02-27 14:47:01

2

一個好方法是,在你的佈局來看,在HTML的頭你把<title>標籤附近:

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

,然後,你加載你的資產是這樣的:

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

HTML <base>標記是定義頁面中所有資產的基本URL的一種方式。通過這種方式,您可以加載位於/foo/assets/images/img.jpg的圖像,而無需在每個標記中調用URL::base()。我希望它有幫助。