如何在CodeIgniter 4中自动加载辅助函数

10
我刚从CodeIgniter官方GitHub下载了CodeIgniter 4,与CodeIgniter 3相比,它发生了很多变化。我想在视图中使用base_url()函数,为此,您需要加载URL帮助程序,在CodeIgniter 3中,我在config/autoload.php文件中自动加载它。但是现在,在CodeIgniter 4中,他们完全改变了config/autoload.php文件的结构,这让我非常困惑。
您仍然可以通过在控制器的构造函数中使用以下代码来在CodeIgniter 4中的视图中使用base_url()函数:helper('url'); 如果有人知道如何通过修改config/autoload.php文件来自动加载帮助程序函数,例如url,请帮助我。

现在使用CI 4还为时过早。 - Abdulla Nilam
@AbdullaNilam 是的,我知道。我只是在尝试最新版本以了解它的新功能,而不是用它做任何项目,因为他们不建议使用Cl 4。由于Cl 4尚未正式发布,所以我无法从第三方网站获得任何帮助。 - Geordy James
只需等待,我保证会有好消息的。 :) - Abdulla Nilam
@AbdullaNilam 好的,先生。 - Geordy James
6个回答

6

CodeIgniter 4目前仍处于开发阶段,因此许多功能尚不可用。答案是在CodeIgniter 4的autoload.php文件中无法自动加载helpers或libraries。

我知道这是许多人使用的功能,但自动加载所有内容会降低网站性能,因此开发团队可能决定放弃此功能。

来自CodeIgniter 4文档:

您可以在控制器构造函数中加载helper,以便它们在任何函数中自动可用,或者您可以在需要它的特定函数中加载helper。

https://bcit-ci.github.io/CodeIgniter4/general/helpers.html


6
将你的辅助程序添加到BaseController.php文件中的数组中,格式如下:
protected $helpers = ["form"] // BaseController.php:29;

1
如何加载库? - Gurveer

3

只需在/app/Controllers/BaseController.php中的$helpers = []数组内添加您想要加载的助手名称即可。

CodeIgniter4会自动加载这些助手。

例如:

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 = ['cookie','date']; // <=== this

2

步骤 1

App/Helpers 中创建帮助程序。示例: alert_helper.php必须_helper结尾。

enter image description here

enter image description here

步骤2

在构造函数或方法中加载帮助程序。 helper(['alert']);

enter image description here

第三步
使用助手

enter image description here

DONE


1
非常感谢您对助手需要使用“_helper”后缀命名的评论。由于我不知道这一点,导致了一个错误。再次感谢。 - Chris Nadovich

2

供日后参考

由于autoload.php中没有自动加载,您需要自己加载所有帮助文件。这与CodeIgniter 3中的全局加载不同。

如何加载

public function FunctionName()
{
    helper(['form', 'validation']); # before retun to view.
    #rest of your code
}

我们需要在每个方法中加载它吗?

是的。由于我在其中进行了操作,无法全局加载助手文件。(2018-2-07)


2
现在我们可以通过BaseController.php全局加载helpers。 - Taufik Nur Rahmanda

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接