0

我正在尝试创建带有页眉、左侧菜单、右侧内容视图和页脚的母版和视图页面布局。每个内容页面都写<div>在单独的页面中。

关于我的左侧菜单链接点击,相应的页面被加载到内容视图中。我为此目的使用了 jQuery,但是当我form_open()在 content view中使用时<div>,它返回:

未定义函数 form_open()

我都试过了

$autoload['helper'] = array('url','form');

$this->load->helper('form');

但两者都不起作用。

当我form_open()在视图页面中使用并通过控制器加载它$this->load->view() 时,我可以使用该form_open方法

这是控制器类、template.php 和 content.php 文件

class Home extends CI_Controller {

public function index(){
    $this->load->helper('form');
    $this->load->library('form_validation');
    $this->view();        
}

public function view() {
    $this->load->view('templates/template');

    .
    .
    .
}

应用程序/视图/模板/模板.php

.
.
.
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
    $('#leftmenu_main ul li a').click(function(){
        $('#content_main').load('<?=base_url()?>application/views/templates/content.php #' + $(this).attr('href'));
        return false;
    });
}



<div id="leftmenu">
<div id="leftmenu_main">                       
    <ul>
        <li><a href="createnewuser">Create New User</a></li>
        <li><a href="createnewtask">Create New Task</a></li>
    </ul>
</div>
</div>

<div id="content_main">
    .
    .
    .
</div>

应用程序/视图/模板/content.php

<div id="createnewuser">    
<?=form_open(controller/method);?>
    .
    .
    .
<?=form_close();?>
</div>
<div id="createnewtask">    
<?=form_open(controller/method);?>
    .
    .
    .
<?=form_close();?>
</div>

当我像下面这样使用 Home Controller 的 view() 并将我的 div 的“内容”之一作为页面放置在 views/pages/ 中时,它可以工作并且能够使用 form_open() 标记...

public function view() {
    $page = 'createnewtask';       
    $this->load->view('templates/header'); 
    $this->load->view('pages/'.$page);        
    $this->load->view('templates/footer');
}

我为此进行了很多搜索,但找不到解决方案。

有什么我需要加载/配置以form_open()在单独的页面中使用的东西<div>吗?

4

1 回答 1

2

您正在使用 AJAX 加载视图文件。

$('#content_main').load('<?=base_url()?>application/views/templates/content.php #' + $(this).attr('href'));

这是阿贾克斯。问题是,您正在直接加载视图文件。不要这样做!这就是为什么form_open不起作用。视图文件不知道它的存在。

您需要创建一个控制器函数来调用$this->load->view('templates/content');并设置 AJAX 调用。

class Home extends CI_Controller {

    public function index(){
        $this->load->helper('form');
        $this->load->library('form_validation');
        $this->view();        
    }

    public function view() {
        $this->load->view('templates/template');

        .
        .
        .
    }

    public function content(){
        $this->load->view('templates/content');
    }
}

然后将 AJAX 调用更改为:

$('#content_main').load('<?=base_url()?>home/content #' + $(this).attr('href'));

现在您正在通过控制器加载视图,该控制器加载了表单助手,因此form_open可以正常工作。

于 2013-06-05T13:10:47.250 回答