【问题标题】:Get "Unknown method Estado::" while trying to edit record尝试编辑记录时获取“未知方法 Estado::”
【发布时间】:2013-04-03 16:33:54
【问题描述】:

question 相关我在尝试编辑之前创建的任何记录时遇到错误。这是错误(我省略了一些不相关的部分,因为没有过多地扩展帖子):

500 |内部服务器错误 | Doctrine_Record_UnknownPropertyException 未知方法 Estado::

在 () 中的堆栈跟踪 SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record.php 第 2658 行 ... }

    }

    throw new Doctrine_Record_UnknownPropertyException(sprintf('Unknown method

%s::%s', get_class($this), $method));

}


/** at Doctrine_Record->__call('', array()) in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php

line 197 ... at sfDoctrineRecord->__call('', array()) in n/a line n/a ... 在 Estado->() 在 n/a 行 n/a ... 在 call_user_func(array(object('Estado'), '')) 在 SF_ROOT_DIR/plugins/sfDependentSelectPlugin/lib/source/sfDependentSelectObjectSource.class.php 第 56 行 ... 在 sfDependentSelectObjectSource->getRefValue('15') 中 SF_ROOT_DIR/plugins/sfDependentSelectPlugin/lib/widget/sfWidgetFormDependentSelect.class.php 第 98 行 ... 在 sfWidgetFormDependentSelect->render('persona[estado_id]', '15', 数组(),空)在 SF_ROOT_DIR/plugins/sfDependentSelectPlugin/lib/widget/sfWidgetFormObjectDependentSelect.class.php 第 70 行 ... 在 sfWidgetFormObjectDependentSelect->render('persona[estado_id]', '15', 数组(),空)在 SF_ROOT_DIR/plugins/sfDependentSelectPlugin/lib/widget/sfWidgetFormDoctrineDependentSelect.class.php 第 67 行 ... 在 sfWidgetFormDoctrineDependentSelect->render('persona[estado_id]', '15',数组(),空)在 SF_ROOT_DIR/lib/vendor/symfony/lib/widget/sfWidgetFormSchema.class.php 第 512 行 ... 在 sfWidgetFormSchema->renderField('estado_id', '15', 数组(),空)在 SF_ROOT_DIR/lib/vendor/symfony/lib/form/sfFormField.class.php 第 119 行 ... 在 sfFormField->render() 中 SF_ROOT_DIR/lib/vendor/symfony/lib/form/sfFormField.class.php 第58行

我不知道在哪里寻找这个 Estado:: 或者它在哪里失败了,有什么解决办法吗?

【问题讨论】:

  • 你能从你在这里使用的Form类中发布字段“estado_id”的定义吗?
  • @MichalTrojanowski here $this->widgetSchema['estado_id'] = new sfWidgetFormDoctrineDependentSelect(array( 'model' => 'Estado', 'add_empty' => 'Seleccione estado', 'ajax' => true )); $this->widgetSchema['municipio_id'] = new sfWidgetFormDoctrineDependentSelect(array( 'model' => 'Municipio', 'depends' => 'Estado', 'add_empty' => 'Seleccione municipio', 'ajax' => true, 'order_by' => array('nombre', 'asc') )); 也在这里引用的帖子中
  • 看起来你必须指定 'ref_method' 作为 Widget 的一个选项。你真的必须使用sfWidgetFormDoctrineDependentSelect吗?也许您可以使用通常的sfWidgetFormDoctrineChoice
  • @MichalTrojanowski 好吧,我使用它是因为依赖选择。是国家>州的典型问题。你对此有何建议?不使用这个插件而只使用 Symfony Core 类?如何仅使用 Symfony 完成工作?
  • estado_id 不必属于sfWidgetFormDoctrineDependentSelect 类,因为它确实依赖于任何东西。将类更改为sfWidgetFormDoctrineChoice 并删除ajax 选项,你应该没问题。

标签: symfony-1.4 symfony-forms


【解决方案1】:

所以问题在于小部件的定义。使用的原始定义:

$this->widgetSchema['estado_id'] = new sfWidgetFormDoctrineDependentSelect(array( 
    'model' => 'Estado', 
    'add_empty' => 'Seleccione estado', 
    'ajax' => true 
)); 

$this->widgetSchema['municipio_id'] = new sfWidgetFormDoctrineDependentSelect(array( 
    'model' => 'Municipio', 
    'depends' => 'Estado', 
    'add_empty' => 'Seleccione municipio', 
    'ajax' => true, 
    'order_by' => array('nombre', 'asc') 
));

这两个小部件都属于sfWidgetFormDoctrineDependentSelect 类,但实际上只有municipio_id 具有依赖关系。

似乎sfWidgetFormDoctrineDependentSelect 需要设置ref_methoddepends 选项才能正常工作。

如果您将 estado_id 更改为此它将起作用:

$this->widgetSchema['estado_id'] = new sfWidgetFormDoctrineChoice(array( 
    'model' => 'Estado', 
    'add_empty' => 'Seleccione estado',
)); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    相关资源
    最近更新 更多