如何从Controller调用函数以包含到Codeigniter的View页面?

时间:2011-10-28 03:45:38

标签: php codeigniter include

我想从Controller调用函数以包含到Codeigniter的View页面中。通常当我打开任何页面时,我会在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中这样显示。

3 个答案:

答案 0 :(得分:1)

我真的无法理解你的问题,但是嘿,你可以在另一个视图中“包含”任何视图而不会出现问题。

在main.php中:

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

您甚至不需要将它传递给paramwters,因为它们是缓冲的,因此可用于您可能插入的任何子视图。但是,请更清楚你真正需要什么。

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

所以,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 :(得分:0)

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

如果这是正确的,那么我们通常不能这样做。以下是几种选择:

  1. 将这些功能移动到库/助手。在任何地方加载库/帮助程序,然后可以调用这些函数。

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

答案 2 :(得分:0)

您不能使用网站网址,请使用此$ this-&gt; loading-&gt;视图('template',$ data);对于codeigniter。