ホームページ  >  記事  >  バックエンド開発  >  yii フレームワークのフォーム モデルを使用して配列形式でフォームを送信する手順の詳細な説明

yii フレームワークのフォーム モデルを使用して配列形式でフォームを送信する手順の詳細な説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-21 10:00:361135ブラウズ

今回は、yii フレームワークのフォームモデルを使用して配列形式でフォームを送信する手順について詳しく説明します。 yii フレームワークのフォームモデルを使用してフォームを配列形式で送信する場合の注意事項 について説明します。ここで実際のケースを見てみましょう。

Yii ドキュメントの説明によると、Yii がフォームを処理する一般的なプロセスは次のとおりです:
フォームに対応するモデルクラスを作成し、フィールドを設定します検証ルール
フォームの送信に対応するアクションを作成し、ビューで送信されたコンテンツ
を処理しますフォーム
を作成します。先ほどの小さなプロジェクトで、ajaxを使用してフォーム情報を送信し、検証して保存したいのですが、非表示のiframeを非表示に使用したくありません。 -refresh submit、アクション内でモデルクラスの検証メソッドが使えるので、フォーム配列を使ってSubmitすることを考えました。
フォームコードの例:

<form action=&#39;&#39; method=&#39;post&#39; name=&#39;form_test&#39;>
    <input type=&#39;text&#39; name=&#39;arr[]&#39; value=&#39;1&#39;>
    <input type=&#39;text&#39; name=&#39;arr[]&#39; value=&#39;2&#39;>
    <input type=&#39;text&#39; name=&#39;arr[]&#39; value=&#39;3&#39;>
</form>

送信後、$_POST['arr'] を直接使用して、送信されたデータを取得できます:

Array
(
    [0] => a
    [1] => b
    [2] => c
)

同様に、次のように使用した場合。送信するフォーム:

<form action=&#39;&#39; method=&#39;post&#39; name=&#39;form_test&#39;>
    <input type=&#39;text&#39; name=&#39;arr[3]&#39; value=&#39;a&#39;>
    <input type=&#39;text&#39; name=&#39;arr[6]&#39; value=&#39;b&#39;>
    <input type=&#39;text&#39; name=&#39;arr[8]&#39; value=&#39;c&#39;>
</form>
$_POST[&#39;arr&#39;]
Array
(
    [3] => a
    [6] => b
    [8] => c
)

もちろん、二次元配列を送信することもできます:

<form action=&#39;http://127.0.0.1/zhaobolu/test.php&#39; method=&#39;post&#39; name=&#39;form_test&#39;>    <input type=&#39;text&#39; name=&#39;arr[][name1]&#39; value=&#39;a&#39;>    <input type=&#39;text&#39; name=&#39;arr[][name2]&#39; value=&#39;b&#39;>    <input type=&#39;text&#39; name=&#39;arr[][name3]&#39; value=&#39;c&#39;></form>
$_POST[&#39;arr&#39;] 为:Array(    [0] => Array        (            [name1] => a        )    [1] => Array        (            [name2] => b        )    [2] => Array        (            [name3] => c        ))

ここで問題が発生します。最初の部分配列のキーを設定しない場合、各値は次のようになります。必要に応じて、配列を生成するときに配列に情報を保存し、キー値を追加します:

<form action=&#39;http://127.0.0.1/zhaobolu/test.php&#39; method=&#39;post&#39; name=&#39;form_test&#39;>    <input type=&#39;text&#39; name=&#39;arr[a][name1]&#39; value=&#39;a1&#39;>    <input type=&#39;text&#39; name=&#39;arr[a][value1]&#39; value=&#39;a2&#39;>    <input type=&#39;text&#39; name=&#39;arr[b][name2]&#39; value=&#39;b1&#39;>    <input type=&#39;text&#39; name=&#39;arr[b][value2]&#39; value=&#39;b2&#39;></form> 
$_POST[&#39;arr&#39;] 为:Array(    [a] => Array        (            [name1] => a1            [value1] => a2        )    [b] => Array        (            [name2] => b1            [value2] => b2        ))

Ajax を使用してフォームを送信し、Yii フォームを使用する例モデル検証。最初はモデルクラス部分で、最も単純な検証メソッドのみを持ちます:

<?php
class LandingForm extends CFormModel
{
    public $landing_title;
    public $landing_content;
    public $landing_position;
    public function rules()
    {
        return array(
            array(&#39;landing_title, landing_content&#39;, &#39;required&#39;),
            array(&#39;landing_position&#39;, &#39;default&#39;, &#39;value&#39;=>&#39;&#39;),
        );
    }
}

モデルクラスでパラメータ検証メソッドを設定する場合、ルールが設定されていないパラメータがある場合は、各パブリックパラメータにルールを設定する必要があります。 、$_POST のフォーム値を使用してモデルに値を割り当てた後、パラメーター値は空になります
アクションでフォームによって送信されたパラメーターを取得して確認します:

$model = new LandingForm;
$model->attributes = $_POST[&#39;form&#39;];
if($model->validate()){
    $info = $model->attributes;
    ... 
}

最後に。 、jquery を使用したフロントエンドの送信フォーム部分のコード:

var info = new Object();
info = { &#39;form[landing_title]&#39;: landing_title,
        &#39;form[landing_content]&#39;: landing_content,
        &#39;form[landing_position]&#39;: landing_position,
        };
var url = "...";
$.post(url, info, function(rst){
    ... 
});

この記事の事例などを読んだ後は、この方法を習得したと思います。とても興味深いですね。php 中国語 Web サイトの他の関連記事にも注目してください。 !

推奨読書:

コンソールコマンドを使用してyiiフレームワークを介してスケジュールされたタスクを作成する手順の詳細な説明

PHPアクセラレータeAcceleratorの構成と使用手順の詳細な説明

以上がyii フレームワークのフォーム モデルを使用して配列形式でフォームを送信する手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。