【问题标题】:CodeIgniter 4, helper function not workingCodeIgniter 4,辅助功能不起作用
【发布时间】:2020-03-01 17:17:42
【问题描述】:

我已尝试自动加载辅助函数。我在 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'];

【问题讨论】:

  • 您的自动加载代码不正确。尝试使用 $autoload['helped'] = array('functions');

标签: php codeigniter codeigniter-3 codeigniter-4


【解决方案1】:

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

必须这样声明:

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

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

【讨论】:

  • 我在autoload.php 中添加了行。但不工作。任何其他可能性
  • 你是在 system/helpers 还是 application/helpers 目录下创建了辅助函数?请阅读此文档codeigniter.com/user_guide/general/helpers.html
  • 是的,我创建了文件app/Helpers/My_helper.php
【解决方案2】:

在您的 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'];

您不需要在您的场景中接触 Autoload 类。它用于映射项目中所有不同的命名空间。

app/Helpers/My_helper.php

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

Codeigniter 4 文档helpers

【讨论】:

  • 我收到了错误Call to undefined function chicking_helper()
  • 尝试受保护的 $helpers = ['url', 'file', 'MY_helper'];和你的文件名一模一样,可能大写字母很重要
【解决方案3】:

还要确保 PHP 文件具有正确的命名。我也遇到了这个问题,因为我的自定义帮助文件在 app/Helpers 下被命名为“CustomHelper.php”。将其重命名为“Custom_helper.php”后,可以通过前面提到的 BaseController 加载它:

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

【讨论】:

    【解决方案4】:

    我是这样解决的: 在您的 app/Config/autoload.php 自动加载数组上可选包含帮助程序源。请注意,每个 _helper 都是每个辅助文件名的后缀。 所以在 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',];
    .....
    }
    

    【讨论】:

      【解决方案5】:

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

      class BaseController extends Controller{
      
          protected $helpers = ['url', 'file', 'my'];
      

      将在 app\Helpers 中加载名为“my_helper.php”的文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-01
        • 2017-08-07
        相关资源
        最近更新 更多