You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii2框架控制器报错:获取未知属性Documenttemplateelement::repeat

问题描述

维护遗留PHP(Yii2框架)代码时,编辑页面元素触发错误,提示Documenttemplateelement模型不存在repeat属性,具体报错及堆栈跟踪如下:

Exception (未知属性) 'yii\base\UnknownPropertyException' 错误信息: '获取未知属性: common\models\Documenttemplateelement::repeat' 

在 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\base\Component.php:154

堆栈跟踪:
#0 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\db\BaseActiveRecord.php(298): yii\base\Component->__get('repeat')
#1 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\helpers\BaseHtml.php(2233): yii\db\BaseActiveRecord->__get('repeat')
#2 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\helpers\BaseHtml.php(1826): yii\helpers\BaseHtml::getAttributeValue(Object(common\models\Documenttemplateelement), 'repeat')
#3 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\helpers\BaseHtml.php(1664): yii\helpers\BaseHtml::activeListInput('dropDownList', Object(common\models\Documenttemplateelement), 'repeat', Array, Array)
#4 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\widgets\ActiveField.php(654): yii\helpers\BaseHtml::activeDropDownList(Object(common\models\Documenttemplateelement), 'repeat', Array, Array)
#5 C:\xampp\htdocs\ddtool\vendor\yii-ui\yii2-materialize\ActiveField.php(189): yii\widgets\ActiveField->dropDownList(Array, Array)
#6 C:\xampp\htdocs\ddtool\backend\views\documentmanager\element.php(50): yiiui\yii2materialize\ActiveField->dropDownList(Array)
#7 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\base\View.php(348): require('C:\\xampp\\htdocs...')
#8 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\base\View.php(257): yii\base\View->renderPhpFile('C:\\xampp\\htdocs...', Array)
#9 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\base\View.php(156): yii\base\View->renderFile('C:\\xampp\\htdocs...', Array, Object(backend\controllers\DocumentmanagerController))
#10 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\base\Controller.php(386): yii\base\View->render('element', Array, Object(backend\controllers\DocumentmanagerController))
#11 C:\xampp\htdocs\ddtool\backend\controllers\DocumentmanagerController.php(228): yii\base\Controller->render('element', Array)
#12 [内部函数]: backend\controllers\DocumentmanagerController->actionElementUpdate('137')
#13 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
#14 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\base\Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#15 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\base\Module.php(528): yii\base\Controller->runAction('element-update', Array)
#16 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('documentmanager...', Array)
#17 C:\xampp\htdocs\ddtool\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#18 C:\xampp\htdocs\ddtool\backend\web\index.php(22): yii\base\Application->run()
#19 {main}
解决步骤
  • 检查数据库表结构:确认documenttemplateelement表是否存在repeat字段,若不存在,根据业务需求添加对应字段(比如用tinyint(1)存储开关状态,或varchar存储枚举值)。
  • 更新模型类:打开common/models/Documenttemplateelement.php,如果是手动定义属性,添加public $repeat;;如果是ActiveRecord自动映射,若模型设置了$attributes数组,需把repeat加入其中。
  • 修正视图代码:查看backend/views/documentmanager/element.php第50行的下拉列表代码,确认是否误写属性名,若为笔误,将repeat改为模型实际存在的属性。
  • 清除应用缓存:执行命令php yii cache/flush-all清除Yii2的模型缓存,确保新添加的字段能被模型正确读取。

内容的提问来源于stack exchange,提问作者Amir Dora.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:48:14