首頁 >後端開發 >php教程 >yii框架表單模型以陣列形式提交表單步驟詳解

yii框架表單模型以陣列形式提交表單步驟詳解

php中世界最好的语言
php中世界最好的语言原創
2018-05-21 10:00:361218瀏覽

這次帶給大家yii框架表單模型以陣列形式提交表單步驟詳解,yii框架表單模型以陣列形式提交表單的注意事項有哪些,以下就是實戰案例,一起來看一下。

按Yii文件裡的描述,Yii在處理表單的一般程序是:
建立表單對應的模型類別,設定欄位驗證規則
建立表單提交對應的action,處理提交的內容
在檢視中建立表單form
#在剛剛的一個小專案裡,想使用ajax提交表單資訊並驗證保存,又不想用隱藏iframe來做無刷新提交,並且action中能夠用到模型類別的校驗方法,就想到使用表單數組提交的方式。
例子,form程式碼:

<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'] 來取得提交的數據,$_POST['arr'] 為:

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

同理,如果使用以下form提交:

<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        ))

這裡有一個問題,如果不設定第一個子數組的key,在生成數組時會將每個值順序在arr中添加,如果想將資訊保存在一個array中,添加一個key值即可,如下:

#
<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;),
        );
    }
}

模型類在設定參數校驗的方法時,需要對每一個public參數都設定規則,如果有未設定規則的參數,在用$_POST中的表單值為模型賦值後,未設定規則的參數值將為空
action中取得表單提交的參數並且校驗:

$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中文網其它相關文章!

推薦閱讀:

yii框架透過控制台指令建立定時任務步驟詳解

PHP加速器eAccelerator設定使用步驟詳解

以上是yii框架表單模型以陣列形式提交表單步驟詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn