我要构建自定义库。我想将视图中的字符串传递给库和进程,然后返回到相同的视图。我的代码如下:
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//return profile pic of img arrays.
class MultiImageParser {
function parser($multiImage) { //get $prods->images here as parameter
$images = $multiImage; //gets multiple image from controller like 1.jpg,2.jpg,3.jpg
$pieces = explode(",", $images); //explode make arrays.
$one = $pieces[0];
return $one;
}
}
<?php
$CI =& get_instance();
$CI->load->library('multiImageParser'); //loading library from view
$profilepic = $CI->multiImageParser->parser($prods->images);
echo $profilepic;
?>
我收到此错误call to member function parser() on a non-object
。我该如何解决这个问题。
答案 0 :(得分:0)
问题在于您调用库方法的方式。根据 CI Documentation - Creating Libraries :
对象实例将始终为小写
$this->someclass->some_function(); // Object instances will always be lower case
所以在你的情况下它应该是:
$profilepic = $this->multiimageparser->parser();
但是,您应该始终在Controller中执行所有这些工作,而不是在View中执行正确的MVC模式
你的控制器应该是这样的:
public function controller_method() {
$this->load->library('MultiImageParser');
$img = $this->multiimageparser->parser();
$data = array(
"profilepic" => $img
);
$this->load->view('view_name', $data);
}
和你的观点:
echo $profilepic;
答案 1 :(得分:0)
你有一些字符串是由逗号粘在一起的内嵌图像名称数组。在加载视图的控制器中完成请求分离该元素(并因此将其专用于变量)的工作。为了更好地解释自己,此代码应保留在加载您在此处发布的视图文件的控制器中。或者换句话说,在同一个控制器中生成$prods->images
属性。它也不需要是库,它可以是(私有/受保护的?)同一控制器的方法。但是,如果你想在不同的地方使用它,你也可以使用帮助程序选项。