首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >致命错误:对zend中非对象的成员函数addMultiOptions()的调用

致命错误:对zend中非对象的成员函数addMultiOptions()的调用
EN

Stack Overflow用户
提问于 2012-10-12 05:08:00
回答 1查看 725关注 0票数 0

我有一个表单元素companyState,它是一个下拉框。

代码语言:javascript
运行
复制
$companyState = $this->createElement('select', 'companyState')
        ->addMultiOptions(
            array (
                '' => 'Select',

            )
        )
        ->setAttrib('id', 'companyState')          
        ->setRequired(true)
        ->setAttribs(
            array(
                'title' => 'companyState',
                'class' => 'st-select'
            )
        )
        ->removeDecorator('HtmlTag')
        ->removeDecorator('label');

并将表单元素作为$this->addElements(数组($companyState))传递;

在控制器中,我从表中获取companyState名称,并将其赋值给表单,如下所示

代码语言:javascript
运行
复制
$stateListObject = ST_State_StateList::readStateListWithDetailsFromDatabase();
    $stateListIterObject = new ST_State_StateListIter($stateListObject);

    $stateNameArray = array();

    for (; $stateListIterObject->valid(); $stateListIterObject->next()) {
        $stateListObject = $stateListIterObject->current();
        $stateNameArray[$stateListObject->id] = $stateListObject->state_name;
    } 

    $companySettingsFormObject = App::getForm('Company', 'ST_CompanySettingsForm');     
    $obj = $companySettingsFormObject;
    if (!($obj instanceof $companySettingsFormObject)) {
        $companySettingsFormObject = App::getForm('Company', 'ST_CompanySettingsForm');
    }

    $companySettingsFormObject->getElement('companyState')->addMultiOptions($stateNameArray);

我得到了一个致命的错误:调用zend中的非对象的成员函数addMultiOptions(),但不是每次都调用。如果我在文件中做了任何修改,比如添加/删除表单元素,或者从缓存中删除。发生此错误。请帮助跟踪问题并解决它。

EN

回答 1

Stack Overflow用户

发布于 2012-10-12 08:24:21

在做一些事情之前,尝试die(var_dump($companySettingsFormObject))看看$companySettingsFormObject是否存在。

最有可能的是,由于某些原因,在这一行中没有正确地创建$companySettingsFormObject:

代码语言:javascript
运行
复制
$companySettingsFormObject = App::getForm('Company', 'ST_CompanySettingsForm');

编辑:

或者,$companySettingsFormObject->getElement('companyState')不是一个对象。尝试调试getElement()方法,看看它为什么不返回一个对象。

你也可以改变

代码语言:javascript
运行
复制
$companySettingsFormObject->getElement('companyState')->addMultiOptions($stateNameArray);

代码语言:javascript
运行
复制
if (isset($companySettingsFormObject->getElement('companyState')) && is_object($companySettingsFormObject->getElement('companyState'))) {
    $companySettingsFormObject->getElement('companyState')->addMultiOptions($stateNameArray);
}

它将检查元素是否存在,以及它是否是一个对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12852589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档