2

CodeigniterのHMVCは初めてです。

動的フォームを使用すると、ユーザーがリンクをクリックしたときに新しい「セグメント」を作成できます。

現在、セグメントhtmlとphpはmodule / view/segment_view.phpにあります。ビューには動的php変数も必要です。

jQueryを使用して「ビューをロード」するにはどうすればよいですか?jQueryからビューを直接ロードできないことは理解していますが、AJAX呼び出し用にコントローラーを構造化する方法がわかりません。これはCodeigniterの強みではないようですか?

編集:
「セグメント」はフォーム内にあります。フォームには常に1つのセグメントがあります。jQueryはさらにセグメントを追加できます。各セグメントには、フォームの入力と検証のためにphp配列が必要です。

これは、form_viewファイルの簡略化されたバージョンです。

for ($i=1; $i<=$number_of_segments; $i++) {

    $data['location'] = array(
        'name'  =>  "segment[$i][location]",
        'value' =>  set_value("segment[$i][location]"),
        'maxlength' =>  '255',
        'size'  =>  '30'
    );  
 ?>
    <div class="area">
        <div class="row"><h2>Segment <?php echo $i;?></h2></div>

        <?php 
        $this->load->view('module/segment_view', $data);
        ?>

    </div> <!--/div class="area"-->
<?php
}    //end for
?>

さて、これは実際にはアプリケーションロジックをプレゼンテーションから分離しているわけではありません。ハハ。では、コードがHMVCであり、phpコントローラー/ビューおよびjQueryからアクセスできるようにこれを構造化するための最良の方法は何ですか?

4

1 に答える 1

3

URLでビューファイルを直接呼び出すことはできません。ビューをロードするコントローラーメソッドを呼び出す必要があります。

「ajaxのみ」の処理を実行する場合は、次の関数を使用できます。

if ($this->input->is_ajax_request()) // Do ajax stuff

例としては、ビューフラグメントまたはjsonの読み込みがあります。コントローラーで「ajaxのみ」のメソッドを作成する必要はありません。既存のコントローラーメソッド内からこの関数を使用して、ajaxリクエストの場合は別のことを行うことができます。

これで問題が解決するかどうかわからない場合は、コードと、実行しようとしていることのコンテキストを提供してください。より明確なアドバイスを提供できます。

于 2011-06-23T02:34:28.943 に答える