4

以下の検証ルールを使用して、データベースに追加する簡単なフォームがあります。「フォーム」は autoload.php にあります。

検証ルールのいずれかが壊れている場合は常に、ページにエラー出力が表示されません。壊れていない場合、フォームは期待どおりに通過します。

これが私のコントローラー機能です

  public function add()
{

    $this->load->library('form_validation');
    $this->load->library('layout');
    // field name, error message, validation rules
    $this->form_validation->set_rules('type', 'Type', 'required|xss_clean');
    $this->form_validation->set_rules('title_type', 'Title type', 'required|xss_clean');
    $this->form_validation->set_rules('first_name', 'First name', 'trim|required|min_length[1]|max_length[150]|xss_clean');
    $this->form_validation->set_rules('surname', 'Surname', 'trim|required|min_length[1]|max_length[150]|xss_clean');
    $this->form_validation->set_rules('job_title', 'Job title', 'trim|min_length[5]|max_length[300]required|xss_clean');
    $this->form_validation->set_rules('office_number', 'Office number', 'trim|min_length[2]|max_length[11]|xss_clean');
    $this->form_validation->set_rules('telephone', 'Telephone', 'trim|numeric|xss_clean');
    $this->form_validation->set_rules('email', 'Email', 'trim|valid_email|xss_clean');
    $this->form_validation->set_rules('website', 'Website', 'trim|prep_url|xss_clean');
    $this->form_validation->set_rules('background', 'Background', 'trim|xss_clean');


    $data = array(
        'title' => 'Add staff member'
    );

    if ($this->form_validation->run() == FALSE) { //Was errors

        $this->session->set_flashdata('message','You missed some details, please try again.');

        $this->layout->load('default', 'add_person', $data);
    } else {
        $this->people_model->add_person();
        $this->layout->load('default', 'added_person', $data);
    }


} //add

そして、私のフォームビューには

    <?php echo validation_errors('<p class="msg msg-error">') ?>

誰が私が間違ったことをしたかを見ることができますか、私は考えられるすべてを試しました。

validation_errors() の var_dump は、

string '' (length=0)

編集:奇妙なことに、これらの2行を入れ替えると、次のようになります:

    $this->load->library('form_validation');
    $this->load->library('layout'); //lib code http://pastebin.com/K1rBV512

Message: Undefined property: People::$form_validation

Filename: controllers/people.php

Line Number: 27
4

3 に答える 3

1

$data配列をモデルに渡す必要があります。すべての入力POSTVIEWページから取得する必要があります。特定のエラーが表示されていないため、問題を診断するのは困難です。

POSTで次のようなすべての入力を確認してくださいMODEL

`'first_name' => $this->input->post('first_name'),`


あなたのview

<?php echo validation_errors('<p class="msg msg-error">') ?>

これを次のようviewに変更します。

<p class="msg msg-error"><?php echo validation_errors(); ?></p>
于 2012-10-22T15:31:04.797 に答える
0

エラーはセッションとは何の関係もないようですが、セッションライブラリをロードしていません。

于 2012-10-22T15:30:53.223 に答える
0

問題はコントローラーではなく、あなたの見解にあると思います。$_POST が空で、検証するものが何もないことが問題のようです。

これは未回答のようです。うまくいけば、他の人に役立つでしょう。

これが発生した場合は、$_POST で var_dump を試してください。空の場合は、

次に、「id」ではなく「name」プロパティを使用して入力があることを確認します

これが誰にも役立つことを願っています

于 2015-08-30T19:38:35.533 に答える