繁体   English   中英

CodeIgniter 4,助手 function 不工作

[英]CodeIgniter 4, helper function not working

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

应用程序/配置/自动加载.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';
   }

应用程序/视图/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'];

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

app/Helpers/My_helper.php

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

Codeigniter 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',];
.....
}

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

class BaseController extends Controller{

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

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

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

它必须声明如下:

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

然后在您的 controller 或 model 中,只需调用帮助程序 function 例如default_method($parameter) default_method 是您的助手 function 名称。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM