2011-12-01 38 views
0

當前entityreference不支持篩選(通過類似引用的視圖)。我必須通過hook_form_alter手動過濾返回的選項列表結果。Drupal覆蓋現有的選項列表值

$new_options = array(1 => 'One', 2 => 'Two', 3 => 'Three'); // while old values without filtering results in 10 items 
$form['field_entityreference'][$lang]['#options'] = $new_options; 

這工作得很好,在前端,但是當我通過DSM($形式)查看;,舊值仍然存在。

一對夫婦嘗試無果:

if ($old_options = $form['field_entityreference'][$lang]['#options']) { 
    foreach ($old_options as $key => $old_option) { 
     unset($form['field_entityreference'][$lang]['#options'][$key]); 
    } 
    } 

甚至unset($form['field_entityreference'][$lang]['#options']); 隨着array_diff_key還舊的選項仍然在那裏舉行。

前端很好,只顯示新選項,但我需要從源中排除不需要的內容,因爲規則總是在未被完全刪除時評估爲真,這是意外的。

如何刪除舊的值,以便即使在後端只保留新的值?

有用的功能還沒有:http://drupal.org/node/1085704。 任何提示將非常感激。謝謝

回答

0

對不起。這是dsm()放置的問題。其實一切都很好。問題是dsm();總是放在任何覆蓋之前,並且drupal仍然讀取舊值。放置dsm();在覆蓋後顯示預期的結果,多麼鬥爭:)。規則是另一回事。