0

codeigniter アプリケーションの複数のページで再利用したい単純な検索フォームがあります。たとえば、現在、サイドバーに検索フォームがあり、そのサイドバーをインデックス、アバウト、およびその他のページに表示することを計画しています。

ユーザーがフォームを送信したのと同じページに、フォームの検証でエラーが表示されるようにしたいと考えています。

例えば:

  1. ユーザーは About ページにいます。
  2. ユーザーが無効なデータを含むフォームを送信しました
  3. [概要] ページのサイドバーにエラーが表示される

  1. ユーザーはインデックス ページにいます。
  2. ユーザーが無効なデータを含むフォームを送信しました
  3. インデックス ページのサイドバーにエラーが表示される

しかし、そのフォーム検証ロジックを再利用したいと思います。ユーザーが投稿したページにエラーを表示したいだけです。

それを行う方法はありますか?初心者の質問で申し訳ありませんが、私はCIにかなり慣れていません。

4

4 に答える 4

1

ここでは、グローバルに考える必要があります。

Step.1 : ビュー ファイルを 1 つ作成します: display.php には次の内容が含まれます。

    <div id = "main">
        <div id = "header">
            [load header file here]
        </div>
<?php
        if(validation_errors() != '') {
?>
            <div id = "error">
                <?=validation_errors()?>
            </div>
<?php
        }
?>
        <div id = "content">
            <?=$page?>
        </div>
        <div id = "footer">
            [load footer file here]
        </div>
    </div>

Step.2 : About us Page.(コントローラー)

.... あなたのデータ ....

コントローラ関数の終了時

    $data['page'] = 'aboutus';
    $this->load->view('display',$data);
于 2012-04-09T08:55:52.827 に答える
0

上記の質問に対するあなたのコメントに関しては、Flashデータを使用できます

セッションライブラリがロードされていることを前提として、ここにヘルパー関数があります。

function last_page($page = null){
    $ci = get_instance();
    if($page === null)
        return $ci->session->flashdata('last_page');
    $ci->session->set_flashdata('last_page', $page);
}

次に、aboutページの上部で呼び出すことができますlast_page('about');。次に、最後に表示されたページが何であったかを知りたい場合はlast_page();、パラメーターなしで呼び出すことができます。

于 2012-04-09T08:30:20.473 に答える
0

ユーザー ガイドには、ルールのセット/グループを構成するさまざまな方法があります。次に、次のようなものを簡単に使用できます。

if ($this->form_validation->run('signup') == FALSE)
{
   $this->load->view('myform');
}
else
{
   $this->load->view('formsuccess');
}

これにより、検証の「サインアップ」グループが実行されます。私にとって、これは再利用可能な検証ルールを実現する最もクリーンな方法です。

于 2012-04-09T14:32:36.827 に答える
0

これは完全に有効な質問です。私は PHP の専門家でも CI の専門家でもありませんが、実際には、投稿元のビューを作成していないコントローラーに投稿したい場合があります。つまり、それ自体への投稿は機能しません。

Ellislab フォーラムでこの投稿を見つけました: http://ellislab.com/forums/viewthread/217176/

このページでは、それについて 2 つの方法があります。どちらもフラッシュデータを使用しており、どちらも完全に有効です。

1 つ目: ヘルパー関数を作成する http://ellislab.com/forums/viewreply/1003010/

2 つ目: CI_Form_Validation クラスを拡張します。 http://ellislab.com/forums/viewreply/1047536/

2 番目の方法は、フォーム検証クラスがフラッシュ データについて何かを知る必要があるかどうかについて議論する人もいるかもしれませんが、最もきれいに見える方法です。

于 2013-04-11T23:11:53.207 に答える