0

我想要做的是my_custom_settings.phpconfig目录中创建一个文件并在视图部分调用定义的变量。

让我们说my_custom_settings.php

define('TEMPLATE_DIR', 'assets/front');

并在 HTML 中直接查看部分:

<link href="<?=TEMPLATE_DIR?>/stylesheet/style.css">

或任何其他替代解决方案?

PS:现在我base_url()用来访问路径

4

3 回答 3

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"/>
于 2012-11-22T08:59:44.690 回答
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->config 获得值,例如

$this->config->item( 'site_slogan' )

有点尴尬,但是对于视图,这是奖励,您只需要配置名称

echo $TEMPLATE_DIR . '/somefile' ;
于 2012-11-22T21:13:22.933 回答
0

图片、css、javascript、pdfs、xml……任何允许直接访问的东西都不应该存在于您的应用程序目录中。你可以这样做,但你真的不应该这样做。在您的目录根目录下为这些文件创建一个新文件夹,它们不应混入您的应用程序中,例如:在您的视图文件夹中。

  1. 很有可能,您正在使用 .htaccess 文件,该文件只允许通过 http 访问某些目录。出于安全原因,这非常好,您希望停止任何直接访问控制器和模型的尝试。这也是为什么我们检查 BASEPATH 是否定义在大多数文件的顶部,如果没有定义则 exit('No direct script access.')。

  2. 要获得这些资源(js/css/images)的正确路径,您不能使用相对路径,因为我们没有使用正常的目录结构。url /users/login 没有从目录 /users/login 加载文件,它可能甚至不存在。这些只是引导程序用来知道要使用哪个类、方法和参数的 uri 段。要获得正确的路径,请使用正斜杠(假设您的应用程序和资产位于根目录中,而不是子目录中),如下所示:

    或者你最好的选择,使用绝对网址:

    // 引用你的 $config['base_url'] " /> 等价于:

    http://mydomain.com/images/myimage.jpg CI 中内置了一些帮助程序,您也可以选择使用它们,但这就是您需要知道的全部内容。

于 2012-11-22T09:04:41.160 回答