Home  >  Article  >  Backend Development  >  The yii framework form model submits form data in the form of an array

The yii framework form model submits form data in the form of an array

WBOY
WBOYOriginal
2016-07-25 09:12:511124browse

According to the description in the Yii documentation, the general process of Yii processing forms is: Create a model class corresponding to the form and set field validation rules Create an action corresponding to form submission and process the submitted content Create a form in the view In a small project just now, I wanted to use ajax to submit form information and verify and save it, but I didn’t want to use a hidden iframe for non-refresh submission, and the verification method of the model class could be used in the action, so I thought of using the form array submission method. . Example, form code:

  1. < ;input type='text' name='arr[]' value='2'>
Copy the code

After submission, you can directly use $_POST['arr'] to get the submitted data. $_POST['arr'] is: Array ( [0] => a [1] => b [2] => c )

Similarly, if you use the following form to submit:

  1. < /form>
Copy the code

$_POST['arr'] as: Array ( [3] => a [6] => b [8] => c )

Of course you can also submit a two-dimensional array:

Copy code

$_POST['arr'] is: Array ( [0] => Array ( [name1] => a ) [1] => Array ( [name2] => b ) [2] => Array ( [name3] => c ) ) There is a problem here. If you do not set the key of the first sub-array, each value will be added to arr sequentially when generating the array. If you want to save the information in an array, just add a key value, as follows:

Copy code

$_POST['arr'] is: Array ( [a] => Array ( [name1] => a1 [value1] => a2 ) => Array ( [name2] => b1 [value2] => b2 ) )

An example of using ajax to submit a form and verifying it using the yii form model. The first is the model class part, which has only the simplest verification method:

  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. }
Copy code

The model class is setting parameters When verifying the method, you need to set rules for each public parameter. If there are parameters without set rules, after assigning values ​​to the model using the form value in $_POST, the parameter values ​​without set rules will be empty. Get the parameters submitted by the form in the action and verify:

  1. $model = new LandingForm;
  2. $model->attributes = $_POST['form'];
  3. if($model->validate()){
  4. $info = $model-> attributes;
  5. ...
  6. }
Copy code

The last is the code for the front-end submission form part, using 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. });
Copy code


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn