【问题标题】:Codeigniter 4 View file invalidCodeigniter 4查看文件无效
【发布时间】:2021-02-13 12:29:20
【问题描述】:

我正在使用带有模块的 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');

我也加入了自动加载

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

当我检查视图文件时 SYSTEMPATH\Common.php : 1121 — CodeIgniter\View\View->render ( arguments )

F:\xampp\htdocs\modularcms\app\Config/../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 \Config\View();
    }

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

        $viewPath = $paths->viewDirectory;
    }

    return new \CodeIgniter\View\View($config, $viewPath, static::locator(), CI_DEBUG, static::logger());
}

【问题讨论】:

  • 这可能是文件和路径名的“句子大小写”的原因。
  • 我没有得到。你能解释一下吗
  • 你的视图文件名是 view_faq 还是 view_faq.php 还是 view_faq.html ?
  • 视图中是view_faq
  • 有什么解决办法吗?

标签: codeigniter-4


【解决方案1】:

我不清楚你的模块目录。假设您想保留一个可以在应用程序之间重复使用的简单常见问题解答模块。您可以创建名称为 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('Faq\Modules\Views\view_faq', $data);

【讨论】:

    【解决方案2】:

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

    echo view('Modules\Faq\Views\admin\\view_faq');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 2015-03-10
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多