目前,entityreference不支持过滤(通过像引用这样的视图)。我必须通过hook_form_alter手动过滤选项列表的返回结果。
$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($ form);查看时,旧的值仍然存在。
几次尝试无济于事:
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,旧选项仍然保留在那里。
前端很好,只显示了新的选项,但是我需要从源中排除不需要的选项,因为当未完全删除时,规则总是计算为true,这是意外的。
如何删除延迟的旧值,以便即使在后端也只保留新值?
尚未提供有用的功能:http://drupal.org/node/1085704。 任何提示都将非常感激。感谢
答案 0 :(得分:0)
抱歉打扰。这是dsm()放置的问题。其实一切都很好。问题是dsm();总是放在任何覆盖之前,drupal仍然读取旧的值。放置dsm();在覆盖显示预期结果后,真是一场斗争:)。规则是另一个故事。