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');

    .
    .
    .
}

アプリケーション/ビュー/テンプレート/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 の「コンテンツ」の 1 つを 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 に答える