yii2 提示Module not inserted due to validation error.

项目的后台更改和添加文章突然无效了,查看系统日志发现是

Module not inserted due to validation error.

其实原因很简单,在表单中加入了百度编辑器,在给编辑器命名的时候使用了name="content",由于yii2 view页面在提交表单后,控制器要使用$model->load()来检查当前类名数组是否存在。

如:

view里的表单元素提交的值都放在Article[]数组中,提交的时候会产生这样的一个数组

array (size=2)
  '_csrf' => string 'cUI2b280TUciBGctXXAHLUUmdwMaBSsRIzIAORd8HDQYNQ8YB38JLg==' (length=56)
  'Article' => 
    array (size=6)
      'title' => string '这是一篇测试文章' (length=24)
      'add_time' => string '2015-10-15 08:39:43' (length=19)
      'author' => string 'qmsu' (length=4)
      'type_id' => string '1' (length=1)
      'status' => string '0' (length=1)
      'content' => string '<p>var_dump($post);</p>' (length=23)

如果在该数组外还存在其他的值,则$model->load()会返回false,从而无法添加或更新数据

eg:在Article数组外还有另外一个数据content,从而无法添加或更新数据

array (size=2)
  '_csrf' => string 'cUI2b280TUciBGctXXAHLUUmdwMaBSsRIzIAORd8HDQYNQ8YB38JLg==' (length=56)
  'Article' => 
    array (size=6)
      'title' => string '这是一篇测试文章' (length=24)
      'add_time' => string '2015-10-15 08:39:43' (length=19)
      'author' => string 'qmsu' (length=4)
      'type_id' => string '1' (length=1)
      'status' => string '0' (length=1)
  'content' => string '<p>var_dump($post);</p>' (length=23)

所以在view页面给表单元素命名时,应该使用如下方式name="Article[content]"

<input type="text" maxlength="255" value="" name="Article[content]" class="form-control" id="article-author">

注意:如果使用yii2自动生成表单则无需担心此问题

原文地址:https://www.cnblogs.com/qmsu/p/4882396.html