我想要做的是在my_custom_settings.php
目录中创建config
之类的文件,并在视图部分调用已定义的变量。
让我们说my_custom_settings.php
:
define('TEMPLATE_DIR', 'assets/front');
并在视图中直接以HTML格式显示:
<link href="<?=TEMPLATE_DIR?>/stylesheet/style.css">
或任何其他替代解决方案??
PS:现在我正在使用base_url()
来访问路径
答案 0 :(得分:1)
我亲自扩展/core/helpers/url_helper.php,默认值为site_url() , base_url(), current_url();
等...我只是扩展了base_static_url();
所以放入core / helpers / url_helper.php:
if ( ! function_exists('base_static_url'))
{
function base_static_url()
{
$CI =& get_instance();
return $CI->config->slash_item('base_static_url');
}
}
然后在config.php文件中添加1行:
$config['base_url'] = "http://mysite.com/";
$config['base_static_url'] = "http://mysite.com/static/"; //path to your static resources folder
然后您可以使用以下方法调用静态资源:
<img src="<?php echo base_static_url();?>img/myimage.png"/>
答案 1 :(得分:1)
好的,这可能比您正在寻找的更多, 但这是一种将网站范围的配置放在一个文件中,然后轻松将它们提供的方法
在配置文件夹中你有文件:my_custom_settings.php
在该文件中,您要设置如下的配置值:
$config['TEMPLATE_DIR'] = 'assets/front' ;
$config['site_slogan'] = 'Laravel? Never heard of it' ;
创建另一个名为My_custom_settings.php
的文件将该文件放入:application / library / My_custom_settings.php 该文件将包含:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class My_custom_settings
{
function __construct($config = array() )
{
foreach ($config as $key => $value) {
$data[$key] = $value;
}
// makes it possible for CI to use the load method
$CI =& get_instance();
// load the config variables
$CI->load->vars($data);
}
} // end my custom settings
现在在您的控制器构造函数
中public function __construct() {
parent::__construct();
// Load configs for controller and view
$this->load->library( 'my_custom_settings' );
$this->config->load( 'my_custom_settings' );
} // end construct
现在,对于很酷的部分 - 您在该配置文件中放置的任何内容都将可用于您的控制器和视图。 (您也可以在模型构造函数中加载配置)。
在控制器或模型中,您可以使用$ this-&gt; config获取值,例如
$this->config->item( 'site_slogan' )
有点尴尬,但对于观看,继承人的奖励,你只需要配置名称
echo $TEMPLATE_DIR . '/somefile' ;
答案 2 :(得分:0)
图片,css,javascript,pdfs,xml ......任何允许直接访问的内容都不应该存在于您的应用程序目录中。你可以做到,但你真的不应该这样做。在目录的根目录下为这些文件创建一个新文件夹,它们不应混合到您的应用程序中,例如:在您的views文件夹中。
有可能,你正在使用.htaccess文件,它只允许通过http访问某些目录。出于安全原因,这非常好,您希望停止任何直接访问控制器和模型的尝试。这也是我们检查BASEPATH是否定义在大多数文件顶部的原因,并退出('无直接脚本访问。'),如果没有。
要获取这些资源(js / css / images)的正确路径,您不能使用相对路径,因为我们没有使用普通的目录结构。 url / users / login不从目录/ users / login加载文件,它甚至可能不存在。这些只是uri段,引导程序用它来知道要使用哪个类,方法和参数。 要获得正确的路径,请使用正斜杠(假设您的应用和资产位于根目录中,而不是子目录中),如下所示:
或者你最好的选择,使用绝对网址:
//引用你的$ config ['base_url'] “/&gt; 相当于:
http://mydomain.com/images/myimage.jpg CI中内置了帮助程序,您也可以选择使用它们,但这真的是您需要知道的。