CodeIgniter:创建新助手?
-
03-07-2019 - |
题
我需要以不同的方式循环许多数组并将其显示在页面中。数组由模块类生成。我知道最好不要在'views'上包含函数,我想知道在哪里插入函数文件。
我知道我可以“扩展”帮助者,但我不想扩展帮助者。我想用循环函数创建一个帮助器。让我们称之为loops_helper.php
解决方案
CodeIgniter助手是一个具有多个功能的PHP文件。 它不是一个类
创建一个文件并将以下代码放入其中。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if ( ! function_exists('test_method'))
{
function test_method($var = '')
{
return $var;
}
}
将此保存到 application / helpers / 。我们称之为<!> quot; new_helper.php <!>“
存在第一行以确保无法包含该文件并从CodeIgniter范围外部运行。此后的一切都是自我解释的。
使用助手
这可以在控制器,模型或视图(不可取)
$this->load->helper('new_helper');
echo test_method('Hello World');
如果您在很多地方使用此帮助程序,可以通过将其添加到自动加载配置文件(即<your-web-app>\application\config\autoload.php
)来自动加载。
$autoload['helper'] = array('new_helper');
-Mathew
其他提示
允许您在帮助程序中使用CI实例的一些代码:
function yourHelperFunction(){
$ci=& get_instance();
$ci->load->database();
$sql = "select * from table";
$query = $ci->db->query($sql);
$row = $query->result();
}
对我而言,仅在php文件中添加文本"_helper"
后才能正常工作:
并自动加载文件夹 aplication - <!> gt;中的帮助程序;文件autoload.php 在数组助手中添加名称,不带<!> quot; _helper <!> quot;像:
$ autoload ['helper'] = array('comunes');
由此我可以使用所有助手的功能
要创建新助手,您可以按照 The Pixel Developer的说明进行操作,但我的建议不是仅为特定应用程序的特定部分所需的逻辑创建帮助程序。相反,在控制器中使用该逻辑将数组设置为其最终预期值。完成后,使用模板分析器类将其传递给视图和(希望)您可以使用简单变量或变量标记对而不是回声和foreach来保持视图清晰,看起来像PHP。即:
{blog_entries}
<h5>{title}</h5>
<p>{body}</p>
{/blog_entries}
而不是
<?php foreach ($blog_entries as $blog_entry): ?>
<h5><?php echo $blog_entry['title']; ?></h5>
<p><?php echo $blog_entry['body']; ?></p>
<?php endforeach; ?>
这种方法的另一个好处是,您不必像使用自定义帮助程序完成所有工作那样担心添加CI实例。
在 / application / helpers 中创建一个包含助手名称的文件,并将其添加到自动加载配置文件/手动加载。
E.g。使用以下内容在 / application / helpers 中放置一个名为 user_helper.php 的文件:
<?php
function pre($var)
{
echo '<pre>';
if(is_array($var)) {
print_r($var);
} else {
var_dump($var);
}
echo '</pre>';
}
?>
现在您可以通过$this->load->helper(‘user’);
加载帮助程序或将其添加到 application / config / autoload.php config。
只需在应用程序帮助程序目录中定义一个帮助程序即可 然后从您的控制器调用函数名称,如
helper name = new_helper.php
function test_method($data){
return $data
}
在控制器中 加载助手
$this->load->new_helper();
$result = test_method('Hello world!');
if($result){
echo $result
}
输出
Hello World!
要从配置文件中检索项目,请使用以下函数:
$this->config->item('item name');
其中item name是您要检索的$ config数组索引。例如,要获取您的语言选择,您将执行以下操作:
$lang = $this->config->item('language');
如果您尝试获取的项目不存在,则该函数返回FALSE(布尔值)。
如果您使用$ this - <!> gt; config - <!> gt;加载函数的第二个参数,以便将配置项分配给特定索引,则可以通过指定索引名称来检索它。 $ this - <!> gt; config - <!> gt; item()函数的第二个参数。例如:
//加载名为blog_settings.php的配置文件,并将其分配给名为<!>的索引; blog_settings <!>;
$this->config->load('blog_settings', TRUE);
//检索blog_settings数组中包含的名为site_name的配置项
$site_name = $this->config->item('site_name', 'blog_settings');
//指定同一项目的另一种方法:
$blog_config = $this->config->item('blog_settings');
$ site_name = $ blog_config ['site_name'];