【问题标题】:How to load a custom config file automatically in Codeigniter v4?如何在 Codeigniter v4 中自动加载自定义配置文件?
【发布时间】:2020-08-02 03:18:08
【问题描述】:

我在 Config 文件夹中创建了一个自定义配置文件。 配置/Elearning_config.php。现在我想使用 Codeigniter v4 的 Autoload.php 来加载它。如何做到这一点?

<?php namespace Config;

use CodeIgniter\Config\BaseConfig;

class Elearning_config extends BaseConfig
{
    public $theme = 'theme/etreeks/';

}

【问题讨论】:

  • 这样你可以加载 $Elearning_config = new \Config\Elearning_config();并使用像“$variable = $Elearning_config ->theme;”这样的变量
  • 我想自动加载这个。我的意思是,我想在这里使用 Config/Autoload.php。你能解释一下吗?
  • 我已经添加了答案检查一下。
  • 自动加载加载类路径,与加载常量无关(我可以从你的 cmets 中看出答案)。如果您想定义常量而不是像这样在常量文件中定义它们:“defined('VARIABLE') || define('VARIABLE', 'value');”。然后,您可以在项目中的任何位置简单地回显 VARIABLE。

标签: php codeigniter frameworks codeigniter-4


【解决方案1】:

我无法使用 Autoload.php 加载此配置文件。但是我发现了一个自动加载它的过程。

BaseController中写一行

$this->Elearning_config = new \Config\Elearning_config();

并从控制器获取

echo $this->Elearning_config->theme;

我认为这不是自动加载它的正确过程。但这是有效的

【讨论】:

  • 但我无法从视图中得到这个。 echo $this->Elearning_config->主题;无法从视图中工作。
【解决方案2】:

所有文件都由 psr4 加载到 Config 文件夹中,检查 $psr4 数组的第 3 个值

    $psr4 = [
        'App'         => APPPATH,                // To ensure filters, etc still found,
        APP_NAMESPACE => APPPATH,                // For custom namespace
        'Config'      => APPPATH . 'Config',     // check this line if not loaded
    ];

它将自动加载您的配置 现在在任何控制器上使用这个文件和变量,如下所示

<?php namespace App\Controllers;
class Home extends BaseController
{
public function index()
{
    $Elearning_config = new \Config\Elearning_config();
    echo $Elearning_config->theme;//  exit;
    return view('welcome_message');
}
}

如有疑问请留言

【讨论】:

  • 自动加载不工作。如果没有自动加载,第二种方法可以正常工作。
  • 那么好,这意味着你的类已经加载了 $psr4 在 Autoload.php "'Config' => APPPATH . 'Config'," 中检查上面的更多信息codeigniter.com/user_guide/concepts/…
  • print_r($this->classmap);也不能从控制器工作
  • 我的问题是自动加载不起作用,那该怎么做呢?手动加载正在工作。你的方法是手动方法。这工作正常。但自动加载还没有工作。 $Elearning_config = 新 \Config\Elearning_config();意味着创建一个要加载的对象。我想自动加载它。在 CI3 $autoload['config'] = array('Elearning_config');意味着这将自动加载。无需制作任何对象。但是感谢您的帮助
  • 范围保留在 Autoload.php 或其子类中,如果不是在控制器中继承而是离开它。我写下来只是为了理解目的。检查更新的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 2014-01-15
  • 2016-10-25
相关资源
最近更新 更多