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" 的文件。
我试过自动加载辅助函数。我已经在 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" 的文件。