我想在视图部分做一些帮助,这样我就可以在整个项目的视图部分共享公共逻辑。
但似乎在CI中,没有像CakePhp这样的概念,我可以使用自定义助手。
我经常搜索但没有得到任何正确的结果。
下面我提到了我视图部分的一些代码。
<?php $dt2 = strtotime($single->time_stamp);
$dt1 = strtotime(date("Y-m-d H:i:s"));
echo (int)(abs($dt1 - $dt2)/(60*60));?>
我在视图中使用了这些代码,但我想重复使用它。
我想调用一个自定义助手传递一个参数,因为另一个是当前日期。
有什么建议吗?
提前谢谢。
答案 0 :(得分:1)
这将是你的助手应用程序/助手/ 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);
答案 1 :(得分:0)
您可以使用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');
答案 2 :(得分:0)
是的,非常简单,无需做额外的工作。
只需加载您在控制器或视图中或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一样容易:)。
然后它会正常工作。
这对像我这样的人来说可能会有所帮助。 快乐的编码:)