将参数从视图传递到库并在进程代码点火器后返回

时间:2015-03-07 14:04:18

标签: php codeigniter model-view-controller

我要构建自定义库。我想将视图中的字符串传递给库和进程,然后返回到相同的视图。我的代码如下:

application / libraries / MultiImageParser.php

 <?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。我该如何解决这个问题。

2 个答案:

答案 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属性。它也不需要是库,它可以是(私有/受保护的?)同一控制器的方法。但是,如果你想在不同的地方使用它,你也可以使用帮助程序选项。