我正在尝试在视图部分做一些帮助器,这样我就可以在整个项目的视图部分共享公共逻辑。
但在CI中似乎没有这样的概念,就像在CakePhp中一样,我可以使用自定义帮助器。
我搜索了很多,但没有得到任何适当的结果来执行。
下面我已经提到了我的视图部分的一些代码。
<?php $dt2 = strtotime($single->time_stamp);
$dt1 = strtotime(date("Y-m-d H:i:s"));
echo (int)(abs($dt1 - $dt2)/(60*60));?>我已经在视图中使用了这些代码,但我想重用它。
我想调用一个自定义帮助器来传递一个参数,因为另一个参数是当前日期。
有什么建议吗?
提前谢谢你。
发布于 2016-12-19 22:23:53
这将是您的辅助应用程序/helpers/time_diff_helper.php:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
if (!function_exists('time_diff'))
{
function time_diff()
{
$dt2 = strtotime($single->time_stamp);
$dt1 = strtotime(date("Y-m-d H:i:s"));
return (int)(abs($dt1 - $dt2)/(60*60));
}
}然后将其加载到控制器中:
$this->load->helper('time_diff');
$tdiff = time_diff();如果您将其加载到您的控制器中,您还应该能够在视图中使用它。人们会争辩说,业务逻辑不属于视图,视图是用来格式化显示的。您的函数是业务逻辑的一部分还是只是布局的一部分……?我想这是一个解释的问题。我会在控制器中调用它,并将其传递给视图。
$data['time_diff'] = time_diff();
$this->load->view('myscreen1', $data);发布于 2016-12-19 20:19:36
您可以使用CodeIgniter创建自定义帮助器。您必须将它们放入应用程序/帮助程序中。
下面是如何实现的:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
if (!function_exists('resize_uploaded_pix'))
{
function resize_uploaded_pix($pic_full_path, $formatname)
{
//global $image_format;
$config['image_library'] = 'gd2';
$config['source_image'] = $pic_full_path;
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
/*
* get session load lib and config
*/
$CI =& get_instance();
$CI->load->library('image_lib');
$CI->config->load('myconfig', TRUE);
$image_format = $CI->config->item('image_format', 'myconfig'); 您不能从帮助器中访问$this。因此,如果您需要在其中使用其他库,则需要像这样获取实例指针:
$CI =& get_instance();
$CI->load->library('image_lib');然后从你的代码中调用助手代码,在本例中是一个控制器(但在视图中应该是一样的),如下所示:
$this->load->helper('resize_pix');
resize_uploaded_pix($upload_data['upload_data']['full_path'], 'default');发布于 2016-12-20 19:30:56
是的,它非常简单,不需要做一些额外的工作。
只需在控制器或视图或autoload.php中加载您创建的帮助器,
我把它加载到autoload.php里了
$autoload['helper'] = array('url','string','form','common_helper');如果你想在控制器/视图中加载它,那么遵循下面的synatx。
$this->load->helper('common_helper');然后下一步是调用帮助器,根据我的要求,我需要从视图中调用它,因此代码将是。
<?php echo time_diff($test->time_stamp); ?> HOURS AGO只需调用该函数,调用就比cakephp :)简单得多。
那么它就会工作得很好。
它可能会对像我这样的CI新手有所帮助。快乐编码:)
https://stackoverflow.com/questions/41222150
复制相似问题