在Yii _form.php
視圖文件默認情況下用於update.php
和create.php
視圖。
所以,你可能需要做的不行。類似:在update.php和create.php視圖中插入帶有模式的表單。 對於這些操作和不同的操作,所以你保持邏輯分離;這是MVC的基本優勢。
public function actionCreate() {
$model = new Users;
if (isset($_POST['Users'])) {
$model->attributes = $_POST['Users'];
if ($model->save()) { // here in the save() method the valadation is included
// ONLY after we validate and successfully saved we go to update action
$this->redirect(array('update', 'id' => $model->id));
}
}
$this->render('create', array(
'model' => $model,
));
}
最主要的是,當您嘗試保存save()
方法時,驗證自動發生。 因此,如果驗證不成功,則邏輯將回到與視圖中填充的字段相同的操作(例如創建),因爲模型已將數據傳遞給它:$model->attributes = $_POST['Users']
。
如果驗證成功,我們會進一步重定向。沒有nessesary ajax表單提交,即使隨便提交適合在這裏。
public function actionUpdate($id) {
$model = $this->loadModel($id);
if (isset($_POST['Users'])) {
$model->attributes = $_POST['Users'];
if ($model->save()) { // after saving EXISTING record we redirect to 'admin' action
$this->redirect(array('admin'));
}
}
$this->render('update', array(
'model' => $model,
));
}
您保留最初設計的視圖中的表單(更新/創建)。
驗證的獨特性在於模型規則()的簡單:
array('username, email', 'unique'),
電子郵件valadation電子郵件語法似乎是這樣的:
array('email', 'email'),
因此,解決辦法應該是: - 使用Ajax創建表格提交 - 如果確認無誤,填寫表格 - 用戶輸入電子郵件和暱稱 接下來要做什麼?我如何驗證電子郵件和暱稱,然後將所有數據一起提交? – kokoseq 2014-12-08 09:35:50
@kokoseq,看我的更新。 – 2014-12-08 10:32:24