2011-02-17 72 views
1

我使用的symfony 1.4的项目,我需要存储在单场多 选项。如何序列swfWidgetformChoice在数据库中的多个选项,以单场symfony的1.4

我使用sfWidgetFormChoice设置loooks这样的:

$status = Doctrine::getTable('Profile')->getStatuses(); 
    $this->widgetSchema['status'] = new sfWidgetFormChoice(array(
     'expanded'=>true, 
     'choices'=>$status, 
     'multiple'=>true 
     )); 
    $this->validatorSchema['status'] = new sfValidatorChoice( 
      array('choices'=>array_keys($status), 
      'multiple'=>true, 'required'=>false 
    )); 

在我的模型我使用以下方法来连载多种选择到 单个字段。

public function setStatus($data) { 
    $data = serialize($data); 

    $this->_set('status', $data); 

} 

> 这就像一个魅力和数据保存为:?

a:2:{i:0;s:7:"relaxed";i:1;s:8:"Inactive";} 

但是我有我使用的难度在我的模型下面的检索序列化的字符串作为 数组:

public function getStatus() { 
    return unserialize($this->status); 
    } 

我失去了一些东西在这里?我得到以下错误:

公告:未定义的属性:个人资料::在C $状态:.../..// 这没有道理给我..

回答

5

学说的“阵“类型,它会自动序列化/反序列化数组你。只需在schema.yml文件中将状态类型指定为“Array”即可。

+0

感谢提到一个解决方案,我只看到你的答案现在manged使用相同的解决方案@Darmen建议,但是我会尝试这个选项,以解决我的问题它似乎更加正确 – wikus 2011-02-20 23:14:23

1
public function getStatus() { 
    return unserialize($this->_get('status')); 
} 

但是,您可以使用@ greg0ire

相关问题