如何将POST数据绑定到对象可以保存到Doctrine

时间:2012-09-18 12:49:31

标签: symfony1 doctrine

如何将POST数据绑定到对象可以保存或编辑到Doctrine。

我将Doctrine与注释实体一起使用。我不认为绑定数组数据到实体。

我也把Symfony的组件看成是独立的。

示例:

$_POST # form data , array

# this is how doctrine save object
$product = new Product();
$product->setName('product1');
$entityManager->persist($product);
$entityManager->flush();

我想要$product = $helper->convert($_POST, ...) # return product object 然后我可以将$ product坚持到$ entityManager。

1 个答案:

答案 0 :(得分:1)

这将帮助您处理表单: http://symfony.com/doc/current/book/forms.html

将数据放在Entitiy用户的设置者身上。

$entity->setName('Mitchel');

如果你想在实体上发帖,你必须创建一个这样的函数:

    public function setAttributes( array $values )
    {
        foreach( $values as $attribute => $value ) {
            $dateEng = "/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/";
            $dateNl  = "/^([0-9]{2})-([0-9]{2})-([0-9]{4})$/";
            if( preg_match ($dateEng, $value) OR preg_match ($dateNl, $value) ){
                $value = date_create( $value );
            }

            if(is_string( $value )){
                if(preg_match( '/^\d+$/', $value )){
                    $value = (int) $value;
                }
            }

            $this->{'set' . ucfirst( $attribute )}( $value );
        }

        return $this;
    }

这适用于我=) 如果我找到一个不起作用的案例,我只需添加一些代码。

相关问题