【问题标题】:Symfony Adding and Dealing With Custom Form FieldsSymfony 添加和处理自定义表单字段
【发布时间】:2011-07-18 09:04:15
【问题描述】:

我正在使用带有推进功能的 Symfony 来生成一个名为 BaseMeetingMeetingsForm 的表单。

在 MeetingMeetingsForm.class.php 我有以下配置方法:

public function configure() {
    $this->useFields(array('name', 'group_id', 'location', 'start', 'length'));

    $this->widgetSchema['invited'] = new myWidgetFormTokenAutocompleter(array("url"=>"/user/json"));
}

在 MeetingMeetings.php 中,我的保存方法很简单:

  public function save(PropelPDO $con = null) {
    $this->setOwnerId(Meeting::getUserId());

    return parent::save($con);
  }

但是 propel 不知道我的自定义字段,因此对它没有任何作用。我在哪里以及如何放置一个可以处理这个表单字段的特殊部分,请注意这不仅仅是简单的保存到数据库,我需要在输入之前专门处理输入。

感谢您的时间和建议,

【问题讨论】:

  • 请分享您读取/处理表单数据的代码。
  • 没有,symfony 会在某个地方完成,除非你知道在哪里?
  • 好的,那就是你缺少的部分。如果抽象的标准处理不能自动获得您希望获得的所有内容,则您需要自己处理表单数据。请参阅 symfony-project.org/jobeet/1_4/Propel/en/10 并向下滚动以查看 表单操作。它应该包含您要查找的信息。

标签: php forms symfony1 symfony-1.4 propel


【解决方案1】:

您必须定义一个验证器(和/或创建您自己的)。验证器clean()方法返回需要持久化的值。

在 Doctrine(我不知道 Propel)中,表单然后调用表单上的 doUpdateObject(),而后者又调用模型上的 fromArray($arr) 函数。

因此,如果它已经是您模型上的一个属性,您只需创建验证器。如果它是一个更复杂的小部件,您需要在表单中添加一些逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    相关资源
    最近更新 更多