10

フォームをに切り替えるまで、完全に機能するフォームがありmethod="get"ます。今、私はform_validation->run()TRUEに評価することができません。

これは私がフォームを開く方法です:

echo form_open( '', array( 'method' => 'get' ) );

これは、検証する必要がある唯一の部分です。

$this->form_validation->set_rules( 'states', 'states', 'required' );

これは、フォームが検証されているかどうかを確認する方法です。

if( $this->form_validation->run() == FALSE )

Get パラメーターを使用するために他に何かする必要がありますか? 構成でパラメーターをオンにしました ( $config['allow_get_array'] = TRUE;)。検証をスキップしてもフォームは正常に機能するため、CI システムが URL を正しく読み取っていることがわかります。

4

8 に答える 8

17

set_dataCodeIgniter 3 では、GET 配列を関数に渡すことができます。例えば:
$this->form_validation->set_data($this->input->get());

于 2015-03-10T11:15:20.127 に答える
7

追加するだけです:

$_POST['states'] = $this->input->get('states');

直前のフォーム検証の状態フィールドの検証用

$this->form_validation->set_rules('states', 'states', 'required|trim');
于 2014-12-15T17:38:12.953 に答える
5

Codeigniter フォーラムのこの投稿は、フォームの検証が Get Parameters では機能せず、それが Codeigniter のやり方であることを示唆しています。

于 2012-05-09T22:35:10.717 に答える
3

これらの投稿のいくつか以降、Codeigniter は変更されました。gXの答えは正しいと思います。

ユーザーマニュアルの指示、特に配列の検証 ($POST 以外) のセクションは、(今日の時点で) 私にとってはうまく機能し、非常に簡単です。

$this->form_validation->set_rules 行の前に、検証する配列を指定します。

$data = array(
    'username' => 'johndoe',
    'password' => 'mypassword',
    'passconf' => 'mypassword');

$this->form_validation->set_data($data);
于 2016-06-19T13:23:21.240 に答える
2

Form_validation.php ファイルでわかるように、クラスのいたるところに $_POST がハードコーディングされています ;-(

$_GET もサポートしたい場合は、非常に簡単です (そして汚いです)。新しいプロパティを作成できます。

public function __construct($rules = array())
{
    $this->inputData = array_merge($_POST, $_GET);
    ...
}

また、静的メソッドがないため、このクラスのすべての場所で $_POST を $this->inputData に置き換えます。

ベンダー ファイルの編集が推奨されていないことは承知していますが、本当に、必要な場合は実行してください ;-)

于 2014-07-28T11:47:30.010 に答える
0

ファイル Form_validation.php を Form_get_validation.php にコピーし、すべての POST ワード内で名前を GET に変更し、クラスに CI_Form_get_validation という名前を付けます。検証するときは、form_get_validation を呼び出します

于 2021-03-11T14:09:00.043 に答える