繁体   English   中英

如何从Controller调用函数以使用Codeigniter包含到“视图”页面中?

[英]How to call function from Controller to include into the View page with Codeigniter?

我想从Controller调用函数,以使用Codeigniter将其包括到“视图”页面中。 通常,当我打开任何页面时,我都会在Controller中调用$ this-> load-> view()来打开该页面。 现在,我想将子页面包含在主页中,但是它不能在View中包含任何功能。 我试图包括这样的功能。

<body><? include(site_url().'/login'); ?></body>

<body><? include('/login'); ?></body>

<body><? include('./login'); ?></body>

我可以使用此链接打开页面http://localhost/ci_house/index.php/login 但是,当我打开主页运行代码时,会显示这些错误。

A PHP Error was encountered

Severity: Warning

Message: include(http://localhost/ci_house/index.php/login) [function.include]: failed to open stream: no suitable wrapper could be found

Filename: views/main.php

Line Number: 8
A PHP Error was encountered

Severity: Warning

Message: include() [function.include]: Failed opening 'http://localhost/ci_house/index.php/login' for inclusion (include_path='.;C:\php5\pear')

Filename: views/main.php

Line Number: 8

我想在1页中显示2个视图。

function test1()
{ $data['var_for_login_view'] = 'get table1';
  $this->load->view('main1',$data);
}
function test2()
{ $data['var_for_login_view'] = 'get table2';
  $this->load->view('main2',$data);
}

在views / main.php中:

$this->load->view('test1');
$this->load->view('test2');` 

我想表现像

<body>
include('main1.php');
include('main2.php');
</body>

但我可以在Codeigniter中这样显示。

我确实无法很好地理解您的问题,但是,您可以在没有问题的情况下将任何视图“包含”到另一个视图中。

在main.php中:

$this->load->view('login');

您甚至不需要将参数传递给它,因为它们已被缓冲,因此可以插入任何子视图。 但是,请明确您的实际需求。

如果要在main()中包含与login()方法中加载的视图相同的视图,则当然不必包含CI URI,而只需创建需要在控制器的方法login()内部传递的变量,然后调用所需的任何视图,无论是为该特定方法或其他任何控制器方法设计的视图。

因此,for.ex。

function login()
{
  $data['var_for_login_view'] = 'a variable';
  $data['var_for_this_view'] = 'another variable';
  $this->load->view('main');
}

在views / main.php中:

echo $var_for_this_view;
$this->load->view('login');
echo $var_for_login_view;

// see? $data was not passed to $this->load->view('login'), but it's still there nonetheless!

我的理解是:您在一个控制器中定义了一些功能,并且希望能够从另一个控制器/视图调用这些功能。

如果这是正确的,那么我们通常不能这样做。 以下是一些替代方案:

  1. 将这些功能移至库/帮助器。 随时随地加载该库/帮助程序,然后可以调用这些函数。

  2. 如果您绝对需要从控制器调用这些功能,则可以查看HMVC extension

您不能包括使用网站网址,请使用此$ this-> load-> view('template',$ data); 用于代码点火器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM