Using Yii form model and submitting form data in array form_PHP tutorial

WBOY
Release: 2016-07-13 10:31:54
Original
1139 people have browsed it

According to the description in Yii documentation, the general process of Yii processing forms is:

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 a form array. Submission method, for example:

form code:

<form action='' method='post' name='form_test'>
    <input type='text' name='arr[]' value='1'>
    <input type='text' name='arr[]' value='2'>
    <input type='text' name='arr[]' value='3'>
</form>
Copy after login

After submission, you can directly use $_POST['arr'] to obtain the submitted data. $_POST['arr'] is:

<span Array<br /></span><span (
    [</span>0] =><span  a
    [</span>1] =><span  b
    [</span>2] =><span  c
)</span>
Copy after login

Similarly, if you submit using the following form:

<form action='' method='post' name='form_test'>
    <input type='text' name='arr[3]' value='a'>
    <input type='text' name='arr[6]' value='b'>
    <input type='text' name='arr[8]' value='c'>
</form>
Copy after login

$_POST['arr'] is:

<span Array</span><span 
(
    [</span>3] =><span  a
    [</span>6] =><span  b
    [</span>8] =><span  c
)</span>
Copy after login

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

<form action='http://127.0.0.1/zhaobolu/test.php' method='post' name='form_test'>
    <input type='text' name='arr[][name1]' value='a'>
    <input type='text' name='arr[][name2]' value='b'>
    <input type='text' name='arr[][name3]' value='c'>
</form>
Copy after login

$_POST['arr'] is:

<span Array</span><span 
(
    [</span>0] => <span Array</span><span 
        (
            [name1] </span>=><span  a
        )

    [</span>1] => <span Array</span><span 
        (
            [name2] </span>=><span  b
        )

    [</span>2] => <span Array</span><span 
        (
            [name3] </span>=><span  c
        )
)</span>
Copy after login

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:

<form action='http://127.0.0.1/zhaobolu/test.php' method='post' name='form_test'>
    <input type='text' name='arr[a][name1]' value='a1'>
    <input type='text' name='arr[a][value1]' value='a2'>
    <input type='text' name='arr[b][name2]' value='b1'>
    <input type='text' name='arr[b][value2]' value='b2'>
</form>
Copy after login

$_POST['arr'] is:

<span Array</span><span 
(
    [a] </span>=> <span Array</span><span 
        (
            [name1] </span>=><span  a1
            [value1] </span>=><span  a2
        )
    [b] </span>=> <span Array</span><span 
        (
            [name2] </span>=><span  b1
            [value2] </span>=><span  b2
        )
)</span>
Copy after login

Posted below is 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 only has the simplest verification method:

<?<span php
</span><span class</span> LandingForm <span extends</span><span  CFormModel
{
    </span><span public</span> <span $landing_title</span><span ;
    </span><span public</span> <span $landing_content</span><span ;
    </span><span public</span> <span $landing_position</span><span ;

    </span><span public</span> <span function</span><span  rules()
    {
        </span><span return</span> <span array</span><span (
            </span><span array</span>('landing_title, landing_content', 'required'),
            <span array</span>('landing_position', 'default', 'value'=>''),<span 
        );
    }
}</span>
Copy after login

I found something interesting. When setting the parameter verification method, the model class needs to set rules for each public parameter. If there are parameters without set rules, use the form value in $_POST to assign values ​​to the model. After that, the parameter value of the unset rule will be empty

Get the parameters submitted by the form in action and verify:

<span $model = new LandingForm;<br />$model</span>->attributes = <span $_POST</span>['form'<span ];
</span><span if</span>(<span $model</span>-><span validate()){
    </span><span $info</span> = <span $model</span>-><span attributes;
    </span>...<span  
}<br />...</span>
Copy after login

The last is the code for the front-end submission form, using jquery:

<span var</span> info = <span new</span><span  Object();
info </span>= { 'form[landing_title]'<span : landing_title,
        </span>'form[landing_content]'<span : landing_content,
        </span>'form[landing_position]'<span : landing_position,
        };

</span><span var</span> url = "..."<span ;

$.post(url, info, </span><span function</span><span (rst){
    ... 
});</span>
Copy after login

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/760669.htmlTechArticleAccording to the description in the Yii document, the general process of Yii processing forms is: In a small project just now, I want to use ajax to submit form information and verify and save it, but I don’t want to use a hidden iframe to do it without...
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template