ホームページ  >  記事  >  バックエンド開発  >  yii フレームワークのフォーム モデルは、配列の形式でフォーム データを送信します。

yii フレームワークのフォーム モデルは、配列の形式でフォーム データを送信します。

WBOY
WBOYオリジナル
2016-07-25 09:12:511124ブラウズ

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

  1. < ;input type='text' name='arr[]' value='2'>
コードをコピーします

送信後、$_POST['arr'] を直接使用して、送信されたデータを取得できます。 配列 ( [0] => a [1] => b [2] => c )

同様に、次のフォームを使用して送信する場合:

  1. < /form>
コード

$_POST['arr'] を次のようにコピーします。 配列 ( [3] => a [6] => b [8] => c )

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

コードをコピー

$_POST['arr'] は: 配列 ( [0] => 配列 ( [名前1] => a ) [1] => 配列 ( [名前2] => b ) [2] => 配列 ( [名前3] => c ) ) ここで問題が発生します。最初のサブ配列のキーを設定しない場合、配列の生成時に各値が順番に arr に追加されます。配列に情報を保存したい場合は、キー値を追加するだけです。次のように:

コードをコピー

$_POST['arr'] は次のとおりです: 配列 ( [a] => 配列 ( [名前1] => a1 [値1] => a2 ) => 配列 ( [名前2] => b1 [値2] => b2 ) )

ajax を使用してフォームを送信し、yii フォーム モデルを使用して検証する例。最初は、最も単純な検証メソッドのみを備えたモデル クラス部分です。

  1. class LandingForm extends CFormModel
  2. {
  3. public $landing_title;
  4. public $landing_content;
  5. public $landing_position;
  6. public function rules()
  7. {
  8. return array(
  9. array('landing_title, landing_content', 'required'),
  10. array('landing_position', 'default', 'value'=>''),
  11. );
  12. }
  13. }
コードをコピー

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

  1. $model = new LandingForm;
  2. $model->attributes = $_POST['form'];
  3. if($model->validate()){
  4. $info = $model->属性;
  5. ...
  6. }
コードをコピー

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

  1. var info = new Object();
  2. info = { 'form[landing_title]': landing_title,
  3. 'form[landing_content]': landing_content,
  4. 'form[landing_position]': landing_position,
  5. };
  6. var url = "...";
  7. $.post(url, info, function(rst){
  8. ...
  9. });
コードをコピー


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