CodeIgniter 4,辅助函数不工作

CodeIgniter 4, helper function not working

我试过自动加载辅助函数。我已经在 autoload.php 中添加了帮助文件,并在视图文件中调用了该函数,但它不起作用。

app/Config/autoload.php

$psr4 = ['Config'      => APPPATH . 'Config',
         APP_NAMESPACE => APPPATH, 
         'App'         => APPPATH,
         'Helpers'     => APPPATH . 'Helpers/MY_helper'];

app/Helpers/My_helper.php

<?php  if(!defined('BASEPATH')) exit('No direct script access allowed');

   function chicking_helper(){
       return 'welcome to helper function';
   }

app/Views/welcome_message.php

<h1>Welcome to CodeIgniter </h1>
<p class="version">version <?= CodeIgniter\CodeIgniter::CI_VERSION ?></p>

<?php
chicking_helper();
?>

app/Controllers/BaseController

class BaseController extends Controller
{

    /**
     * An array of helpers to be loaded automatically upon
     * class instantiation. These helpers will be available
     * to all other controllers that extend BaseController.
     *
     * @var array
     */
    protected $helpers = ['url', 'file'];

似乎您在 autload.php 中错误地声明了您的帮助函数。

必须这样声明:

$autoload['helper'] = array('file', 'url');

然后在您的控制器或模型中,只需调用 default_method($parameter) 等辅助函数即可。 default_method 是您的辅助函数名称。

在您的 BaseController - $helpers 数组中,添加一个包含您的助手文件名的元素。假设您将其设置为 app/Helpers/My_helper.php,然后您可以像这样编辑您的 BaseController:

class BaseController extends Controller
{

    /**
     * An array of helpers to be loaded automatically upon
     * class instantiation. These helpers will be available
     * to all other controllers that extend BaseController.
     *
     * @var array
     */
    protected $helpers = ['url', 'file', 'my_helper'];

您不需要在您的场景中触及自动加载 class。它用于映射项目中所有不同的命名空间。

app/Helpers/My_helper.php

if(!function_exists('chicking_helper')) {
       function chicking_helper(){
           return 'welcome to helper function';
       }
}

Codeigniter 4 文档helpers

还要确保 PHP 文件的命名正确。我遇到这个问题也是因为我的自定义帮助程序文件在 app/Helpers 下被命名为 "CustomHelper.php"。将其重命名为 "Custom_helper.php" 后,可以通过 BaseController 加载它,如前所述:

class BaseController extends Controller{
    //...
    protected $helpers = ['form', 'url','custom'];
    //...
}

我是这样解决的: 在您的 app/Config/autoload.php 自动加载数组中可选地包含辅助源。注意每个 _helper 是每个 helper filemane 的后缀。 所以在 app/Controllers/BaseController 上只需添加您的前缀助手名称:例如:chicking_helper.php

class BaseController extends Controller
{

    /**
     * An array of helpers to be loaded automatically upon
     * class instantiation. These helpers will be available
     * to all other controllers that extend BaseController.
     *
     * @var array
     */
    protected $helpers = ['form', 'html', 'chicking',];
.....
}

在 BaseController.php 中声明新的助手时,您不需要添加单词“_helper”。例如:

class BaseController extends Controller{

    protected $helpers = ['url', 'file', 'my'];

将寻求在 app\Helpers 中加载名为 "my_helper.php" 的文件。