2017-07-04 14:58:41 3870次浏览 10条回答 1 悬赏 180 金钱

一个model的时候,前端就生成一个关于这个model的ActiveForm就可以了。

<?php $form = ActiveForm::begin(); ?>
//...
<?= $form->field($model, 'xxx')->textInput(['maxlength' => true]) ?>
//...
<?php ActiveForm::end(); ?>

如果是批量插入呢?
比如:

<div>每次点击多一个ActiveForm</div>
<?php $form = ActiveForm::begin(); ?>
//...
<?= $form->field($model, 'xxx')->textInput(['maxlength' => true]) ?>
//...
<?php ActiveForm::end(); ?>
<div>提交的时候相当于一次提交多个model实例</div>

具体的例子是这样的:添加一个商品的时候,一个商品可以对应多个规格,比如不同的颜色,不同的型号,商品是一个表,添加一个商品就是添加一条记录,规格是一个表,添加一个颜色或者一个型号就是一个记录。一次提交有一条商品信息和多条规格信息,必须一起提交到后台,然后验证,具体哪里出错了再返回到前端。
声明一下:功能我能做出来,我就是想知道,Yii2有没有应对这种场景的语法或者功能。

最佳答案

  • koko 发布于 2017-07-05 11:42 举报

    后台写个循环一个一个的添加,报错的就收跳过并收集错误信息。
    这样行不通?

    5 条回复
    回复于 2017-07-05 11:43 回复

    前台应该能对多个输入值自动验证吧

    回复于 2017-07-05 13:05 回复

    你说的后台这么处理是可以,但是前台没法一一对应。

    回复于 2017-07-05 13:25 回复

    前台提交前应该是有一次验证吧。
    你是希望后台反馈有误的信息还要显示出来让用户修正?

    回复于 2017-07-05 13:52 回复

    嗯,是啊

    回复于 2017-07-05 14:35 回复

    首先用户在前台填写时可以做一次验证,这里有误的内容在修正前是不能提交的。(默认就是这样)
    然后后台二次验证有误的,可以将相关信息反馈给前台来让用户修改。
    如果我做,我想这样去实现:

      ajax提交的,这时提交页面应该还没关闭,直接在对应的错误数据上提示,让用户修改。同时要处理已正常保存的数据,以防二次提交。
      普通提交的,提交页面已关闭,需要返回错误数据所在的整条记录,然后打开提交页面,拿这个记录初始化输入框,再提示用户修正有误数据。
    
您需要登录后才可以回答。登录 | 立即注册
数字派
总监

数字派 北京

注册时间:2016-04-19
最后登录:2023-03-07
在线时长:52小时34分
  • 粉丝10
  • 金钱1515
  • 威望10
  • 积分2135

热门问题