我已經創建了一個表單,其中嵌入了另一個表單。我的問題是關於這個嵌入式表單 - 我使用的sfWidgetFormDoctrineChoice小部件的選項multiple設置爲true。這種嵌入形式的配置方法的代碼:Symfony sfWidgetFormDoctrineChoice具有多個選項
public function configure()
{
unset($this['prerequisite_id']);
$this->setWidget('prerequisite_id', new sfWidgetFormDoctrineChoice(array(
'model' => 'Stage',
'query' => Doctrine_Query::create()->select('s.id, s.name')->from('Stage s')->where('s.workflow_id = ?', $this->getOption('workflow_id')),
'multiple' => true
)));
$this->setValidator('prerequisite_id', new sfValidatorDoctrineChoice(array(
'model' => 'Stage',
'multiple' => true,
'query' => Doctrine_Query::create()->select('s.id, s.name')->from('Stage s')->where('s.workflow_id = ?', $this->getOption('workflow_id')),
'column' => 'id'
)));
}
我解封prerequisite_id
字段,因爲它包含在基本形式,但我希望它是多選。 現在,當我添加驗證器時,一切似乎都奏效(它通過了驗證),但是如果發送了多個選擇,似乎在保存記錄時會出現問題。
我提交表單後得到這個PHP的警告:
警告:strlen的()預計參數1是字符串數組中 d給出:\開發\ WWW \ flow_dms \ LIB \供應商\ symfony的\ LIB \插件\ sfDoctrinePlugin \ LIB \數據庫\ sfDoctrineConnectionProfiler.class.php 上線198
多 - 我知道,爲什麼 - 在symfony中的調試模式下,我可以看到在堆棧跟蹤如下:
在Doctrine_Connection-> EXEC( 'INSERT INTO stage_has_prerequisites (prerequisite_id,stage_id)VALUES(?,?)',陣列(陣列('12' , '79'), '103'))
因此,Symfony所做的是將一系列選擇發送給Doctrine - 正如我在調試sql查詢中看到的,Doctrine無法正確呈現查詢。
任何想法如何解決這個問題?我需要有兩個選擇產生了兩個疑問:
INSERT INTO stage_has_prerequisites (prerequisite_id, stage_id) VALUES (12, 103);
INSERT INTO stage_has_prerequisites (prerequisite_id, stage_id) VALUES (79, 103);
stage_id
始終是相同的(我的意思是,它的設置超出此表格由它被嵌入的形式)。
我已經在這個問題上花了4個小時了,所以也許有人能夠提供一些幫助。
而不是編輯你可以回答的問題可以接受的答案 – Arasu 2012-01-05 15:16:12