2

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

应用程序/配置/autoload.php

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

应用程序/Helpers/My_helper.php

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

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

应用程序/视图/welcome_message.php

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

<?php
chicking_helper();
?>

应用程序/控制器/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'];
4

5 回答 5

1

在您的 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 类。它用于映射项目中所有不同的命名空间。

应用程序/Helpers/My_helper.php

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

Codeigniter 4 文档助手

于 2019-11-05T14:10:41.090 回答
1

我是这样解决的:在你的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',];
.....
}
于 2020-02-16T05:59:26.483 回答
1

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

class BaseController extends Controller{

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

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

于 2020-05-25T22:01:06.757 回答
0

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

class BaseController extends Controller{
    //...
    protected $helpers = ['form', 'url','custom'];
    //...
}
于 2019-12-05T09:44:31.010 回答
-1

似乎您在autload.php.

它必须声明如下:

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

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

于 2019-11-05T11:10:11.853 回答