Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将参数从视图传递到库,并在过程代码点火器后返回_Php_Codeigniter_Model View Controller - Fatal编程技术网

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

Php 将参数从视图传递到库,并在过程代码点火器后返回,php,codeigniter,model-view-controller,Php,Codeigniter,Model View Controller,我要建一个定制图书馆。我想将字符串从视图传递到库并进行处理,然后返回到相同的视图。我的代码如下所示: application/libraries/MultiImageParser.php 我在一个非对象上调用成员函数parser()时遇到了这个错误。如何解决此问题。问题在于调用库方法的方式。根据: 对象实例总是小写的 因此,在您的情况下,应该是: $profilepic = $this->multiimageparser->parser(); 但是,您应该始终在控制器中执行所有

我要建一个定制图书馆。我想将字符串从视图传递到库并进行处理,然后返回到相同的视图。我的代码如下所示:

application/libraries/MultiImageParser.php


我在一个非对象上调用成员函数parser()时遇到了这个错误。如何解决此问题。

问题在于调用库方法的方式。根据

对象实例总是小写的

因此,在您的情况下,应该是:

$profilepic = $this->multiimageparser->parser();
但是,您应该始终在控制器中执行所有这些工作,而不是在视图中执行这些工作,以遵循正确的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;

您得到了一些字符串,它是由逗号粘合的图像名称数组内爆的。在加载视图的控制器中,按要求分离该元素(并将其专用于变量)。为了更好地解释我自己,这段代码应该留在加载您发布在这里的视图文件的控制器中。或者换句话说,在生成
$prods->images
属性的同一控制器中。它也不需要是库,它可以是同一控制器的(私有/保护?)方法。但是,如果你想在不同的地方使用它,你也可以使用helper选项。

你不需要在视图中执行
get\u instance
。但是,您不应该在视图中执行任何库调用,而应该在控制器中执行。也可以使用get_实例在视图中加载库。但在加载视图中的库时是否有任何问题。我同意AdrienXL。。您应该始终尝试在控制器中执行任何此类工作,并且不要在视图中执行任何操作,而是显示内容。如果在控制器中,则如何将变量从控制器传递到库,然后在处理后返回。我没有在控制器中尝试过。如果从视图来看是可能的,那么它将需要更少的代码来编写。所以我觉得这会很好。直接从视图中使用库是否有任何不良影响。归根结底,这取决于您是否想要有好的代码。。或者说是什么将一个好的开发人员与一个坏的开发人员区分开来。有了PHP和CI,你可以在任何地方做任何你想做的事情,但是你应该吗?。。通过遵循MVC结构和指导原则,最终您将拥有良好的可读性代码,而不是通心粉代码。如果您仍然存在问题,欢迎您告诉我。我想我无法使用controller实现这一点,因为我有很多循环需要tp解析。我必须从我的角度来做这件事。我可以做一个简单的助手。不管怎样,谢谢你的回复。如果我是你,我会在控制器中运行这些循环,包括来自你库的结果,将它们存储在一个数组中,并将该数组传递给你的视图。控制器执行与库的所有交互。。你的观点将只是解析信息是的,我需要在几个地方使用它,所以我做了一个助手,它的工作就像一个符咒现在。我不需要为这个简单的函数创建库。助手很好。
$profilepic = $this->multiimageparser->parser();
 public function controller_method() {
    $this->load->library('MultiImageParser');
    $img = $this->multiimageparser->parser();
    $data = array(
        "profilepic" => $img
    );
    $this->load->view('view_name', $data);
}
echo $profilepic;