Codeigniter 4查看文件无效

我正在使用带有模块的 codeigniter 4。我收到错误无效文件:Admin/valid_faq.php 视图路径有什么问题?我的模块结构如下

app
 --modules
   -- Faq
      --controller
      --Models
      --Views
        --Admin
          --view_faq

    echo view('layout/header', $data);
    echo view('layout/sidebar');
    echo view('Admin/view_faq', $data);
    echo view('layout/footer');

我已经给出了完整的路径,然后它也不起作用。

    echo view('App/Modules/Faq/Views/Admin/view_faq');
    echo view('Modules/Faq/Views/Admin/view_faq');

我也添加到了 Autoload

public $psr4 = [
    APP_NAMESPACE => APPPATH, // For custom app namespace
    'Config'      => APPPATH . 'Config',
    'Modules'     => APPPATH . 'Modules',
];

当我检查视图文件 SYSTEMPATHCommon.php : 1121 — CodeIgniterViewView->render ( arguments )

F:xampphtdocsmodularcmsappConfig/../Views/Modules/Faq/Views/Admin/view_faq.php

这是有效的

echo view('../Modules/Faq/Views/Admin/view_faq', $data);

我在路径中的视图目录

 public $viewDirectory = __DIR__ . '/../Views';

误差函数

public static function renderer(string $viewPath = null, $config = null, bool $getShared = true)
{
    if ($getShared)
    {
        return static::getSharedInstance('renderer', $viewPath, $config);
    }

    if (is_null($config))
    {
        $config = new ConfigView();
    }

    if (is_null($viewPath))
    {
        $paths = config('Paths');

        $viewPath = $paths->viewDirectory;
    }

    return new CodeIgniterViewView($config, $viewPath, static::locator(), CI_DEBUG, static::logger());
}
stack overflow Codeigniter 4 View file invalid
原文答案

答案:

作者头像

我不清楚你的模块目录。假设您想保留一个可以在应用程序之间重复使用的简单常见问题解答模块。您可以创建名称为 faq 的文件夹,以在其中存储所有模块。您将把它放在主项目根目录中的应用程序目录旁边:

/faq        // modules directory
/app
/public
/system
/tests
/writable

打开 **app/Config/Autoload.php** 并将 Faq 命名空间添加到 psr4 数组属性:

$psr4 = [
    'Config'        => APPPATH . 'Config',
    APP_NAMESPACE   => APPPATH,                // For custom namespace
    'App'           => APPPATH,                // To ensure filters, etc still found,
    'Faq'          => ROOTPATH.'faq'
];

模块中的通用目录结构将模仿主应用程序文件夹:

/faq
    /modules
        /Config
        /Controllers
        /Database
        /Helpers
        /Language
        /Libraries
        /Models
        /Views
            /Admin
               /view_faq

看法:

echo view('FaqModulesViewsview_faq', $data);
作者头像

可能已经太晚了,但也许其他人——比如我——正在寻找它。解决方案就在那里:将 Views 文件夹中的文件夹以小写形式写入,并在其后面加上双反斜杠。所以在你的例子中:

echo view('ModulesFaqViewsadminview_faq');