【发布时间】:2017-01-03 02:13:41
【问题描述】:
我使用 ActiveForm 创建了一个表单,其中包含一个多文件输入。我在提交时启用了 AJAX 验证,但是当我选择“n”项并单击提交按钮时,yii 在后台发送数据但文件验证器返回下一条错误消息:“请上传文件”。好的,我知道为什么要这样做,但是如果我想检查最大文件数和大小并且需要至少一个文件并且我也想使用 ajax 验证,那么我不知道最佳实践是什么。如果我不使用 ajax 验证并且我将 skipOnEmpty 从 false 更改为 true,也许是最佳实践......?
示例(不是真正的完整代码):
型号:
class Document extends Model {
public $name;
public $files;
public function rules()
{
return [
['name', 'required'],
['files', 'file',
'maxSize' => 1024 * 1024,
'maxFiles' => 5,
'skipOnEmpty' => false
]
];
}
public function create() { // other code }
}
控制器:
class DocumentController extends Model
{
public function create()
{
$model = new Document();
$model->load(Yii::$app->request->post());
$model->files = UploadedFile::getInstances($model, 'files');
if (Yii::$app->request->isAjax) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
if ($model->validate() && $model->create()) {
// other code...
}
}
}
谢谢各位!
【问题讨论】:
-
你为什么要
Controller扩展Model? -
这只是示例中的一个错误。
-
这很令人困惑,你应该做出有效的例子,以便人们可以更好地帮助你:)
-
你从来没有犯过错误吗?我认为你应该写一个有用的答案:)
-
哈哈,如果可以的话,我会的.. :D
标签: php ajax validation upload yii2