Kohana:配置主题和子主题的文件

时间:2011-08-14 22:39:15

标签: kohana kohana-3

我想使用默认配置文件构建基本主题,然后我想使用与主主题合并的配置文件构建子主题。我应该使用Kohana :: config类来管理它,还是最好通过包含配置数组并将其与主配置合并来手动处理?到目前为止,我还没有能够加载配置文件,因为我已将它们放在自己的目录中。

基本上我要做的是设置一个结构:

application
|--> classes
     |--> myclass
          |--> myclass.php  // default parent class. Loads the config
          |--> config.php   // array of default config settings
          |--> theme
               |--> blue
               |    |--> blue.php   // extends myclass.php
               |    |--> config.php // merges over the default config settings
               |--> red
               |    |--> red.php    // extends myclass.php
               |    |--> config.php // merges over the default config settings
               |--> green
                    |--> green.php  // extends myclass.php
                    |--> config.php // merges over the default config settings

所以我可以调用类似的东西:

$theme = new Myclass_Theme_Red_Red();

并使用Myclass_Myclass的默认配置加载主题,然后将红色主题合并到默认值上。我希望这是有道理的。

那么在这种结构中处理配置设置的最佳方法是什么 - 还是完全有更好的方法?我不想将所有配置文件移动到application / config中,因为我希望它们与各个主题保持一致。

2 个答案:

答案 0 :(得分:0)

我将配置文件放入一个配置目录,该目录是 classes 目录的兄弟。

所以你的新目录结构是:

application  
 |- classes  
 |- config (your files go in here)
 |-- theme (and can be in their own namespaced directory)
 |--- green  
 |--- red  
 |--- blue

这是您的配置文件应始终使用的位置。如果您需要做一些Kohana不支持的事情,那么您可以在(模块)bootstrap [1]中添加自定义配置阅读器。

Kohana::$config->attach(new Kohana_Config_File);

[1]在Kohana附加新的配置阅读器

一个常见的例子是从子目录加载配置文件,可以通过以下方式实现:

Kohana::$config->attach(new Kohana_Config_File);
Kohana::$config->attach(new Kohana_Config_File('config'.DIRECTORY_SEPARATOR.Kohana::$environment));

这允许我在Kohana的每个环境中使用不同的配置设置。

如果您迫切希望将配置文件保留在类中,则可能需要将每个主题作为单独的模块。

答案 1 :(得分:0)

  

如果您迫切希望将配置文件与您的类保持一致   可能想让每个主题成为一个单独的模块。

无需将每个主题作为单独的模块。实际上,每个模块都有一个主题文件夹更有意义。

假设您有一个模块,并且在该模块中您有一个主题目录。

my-module
 |- classes  
 |- config (your module's config files go in here)
 |-- my-module.php  
 |- themes (in own directory)
 |-- green  
 |--- config
 |---- green-config.php
 |-- red  
 |-- blue

然后你可以像这样加载配置文件:

Kohana::$config->attach(new Kohana_Config_File('themes/green/config'));
$config = Kohana::$config->load('green-config');
echo $config->test; //Hello World!

green-config.php

的内容
<?php defined('SYSPATH') or die('No direct access allowed.');
return array('test'=>'Hello World!');

此外,要快速测试Kohana是否可以访问文件:

Kohana::find_file('themes', 'green/config/green-config');