在symfony中,如何设置表单字段的值?

Jam*_*ore 5 php mysql propel symfony1

我正在覆盖我的doSave()方法基本上执行以下操作:我有一个用户可以选择的sfWidgetFormPropelChoice字段,或者键入一个新选项.如何更改小部件的值?或许我接近这个错误的方式.所以这是我如何覆盖doSave()方法:

public function doSave($con = null)
{
    // Save the manufacturer as either new or existing.
    $manufacturer_obj = ManufacturerPeer::retrieveByName($this['manufacturer_id']->getValue());
    if (!empty($manufacturer_obj))
    {
        $this->getObject()->setManufacturerId($manufacturer_obj->getId()); // NEED TO CHANGE THIS TO UPDATE WIDGET'S VALUE INSTEAD?
    }
    else
    {
        $new = new Manufacturer();
        $new->setName($this['manufacturer_id']->getValue());
        $new->save();
        $this->getObject()->setManufacturerId($new->getId()); // NEED TO CHANGE THIS TO UPDATE WIDGET'S VALUE INSTEAD?
    }

    parent::doSave($con);
}
Run Code Online (Sandbox Code Playgroud)

Hen*_*kov 9

您应该使用setDefault或setDefaults然后它将使用绑定值自动填充.

(sfForm) setDefault ($name, $default)
(sfForm) setDefaults ($defaults)
Run Code Online (Sandbox Code Playgroud)

用法

$form->setDefault('WidgetName', 'Value');
$form->setDefaults(array(
    'WidgetName' => 'Value',
));
Run Code Online (Sandbox Code Playgroud)