0

我正在开发一个 codeigniter 项目,该项目要求我根据情况以一种形式显示不同的 html。

我真正想做的就是将此信息传递给视图并将其输出到屏幕上。

需要注意的是,我使用了修改后的 codeigniter 版本,它不需要任何形式$this->load->view来创建视图。页眉和页脚是自动设置的,所以使用$this->load->view可能是行不通的。

我只想要一些能找到我的文件并允许它传递给我的视图的东西,这样我就可以输出它了。我知道我可以使用包含来做到这一点,但想知道是否有更简单的方法。

4

4 回答 4

1

听起来这个不需要加载视图的功能实际上会阻碍你。我不推荐这种做法。你可以让它推断,如果你不传递一个视图,它会拉一个默认视图,但是你可以覆盖它。您可以使用一种方法创建一个 MY_Controller 来处理您的模板和视图,如果您没有显式声明视图以调用与类同名的目录中的视图和与方法中的方法同名的文件,它将假定uri(http://ellislab.com/codeigniter/user-guide/general/routing.html)。这样,如果您需要显式调用视图或更改任何内容,您只需覆盖该方法或填充属性:

if (count($this->loadViews))
{
    foreach ($this->loadViews as $view)
        $this->load->view($view);
}else
{
    $this->load->view($this->uri->segment(1, 'welcome') . '/' . $this->uri->segment(2, 'index'))
}

您还可以在可能仍然有效的视图中调用视图,这样您就可以随时进入由您的 CI 修改版本调用的默认视图并执行类似的操作

<? if isset($flag): ?>
    $this->load->view('partial_view1');
<? else ?>
    $this->load->view('partial_view2');
<? endif; ?>

您也可以查看 hooks 来解决这个问题。我有一个项目,其中我的视图和模板通过挂钩和 ob_start 视图来控制,然后擦洗它们,然后输出数据。 http://ellislab.com/codeigniter/user-guide/general/hooks.html

我希望这些解决方案中的任何一个都有帮助。如果您需要其他任何东西,请告诉我。

于 2013-07-11T16:15:55.347 回答
1

我想到了。我可能不应该说它被修改了,因为除了你不能使用 load->view 它是无关紧要的。如前所述,我只想将文件输出为视图数据。我想出的是下面。

public function form($form_name = NULL)
{
    $this->view_data['form'] = $this->load->file(APPPATH.'views/stone_sheets/rectangular.php',TRUE);
}

基本上我的问题是我不知道有一个加载文件帮助程序,而且当我尝试使用它时,我一开始没有 APPPATH。谢谢您的帮助。

于 2013-07-11T16:16:17.210 回答
0

您需要向我们提供更多信息,因为您使用的是非标准代码点火器,我们不确定您在哪里遇到代码问题,因为它与标准不同。

通常你需要传递一些数据来做一些逻辑或者(最佳实践)是让你的视图控制器在你的控制器内切换你的表单,并首先拥有标准视图,然后根据情况使用单独的表单。

前任:

public function some_controller($situation)
{
    $this->load->view('head');
    switch($situation)
    {
       case '1': $this->load->view('view1');
        case '2': $this->load->view('view2');
     }
     $this->load->view('footer');
}

但是,由于我们不知道这个“非标准”codeigniter 是什么,因此我们无法对遗漏的内容进行故障排除。

于 2013-07-11T15:51:25.977 回答
0

我不确定你在$this->load->view()方法中修改了什么。无论哪种方式,您都可以将变量传递给您的视图,并基于该变量,您可以在您的视图中包含相应的文件main view

例如,假设您已将$situation变量传递给视图,而不是这样做

if($situation == 'foo')
{
   include(APPPATH.'views/file1.php');
}
else
{
   include(APPPATH.'views/file2.php');
}
于 2013-07-11T15:57:29.150 回答