我创建了一个自定义实体,我正在使用CCK字段。每个捆绑包都有自己的字段。例如:
function MYMODULE_install() {
// Check if our field is not already created.
if (!field_info_field('field_myField')) {
$field = array(
'field_name' => 'date_field',
'type' => 'list_text',
);
field_create_field($field);
}
//Enable is executed only once.
function bundle_callback_enable() {
// Create the instance on the bundle.
$instance = array(
'field_name' => 'date_field',
'entity_type' => 'payment_method',
'label' => 'Expiration Date',
'bundle' => 'card',
'required' => TRUE,
'settings' => array();
field_create_instance($instance);
}
我的捆绑包是从各个模块创建的,因此在每个安装文件中我都会创建相应的字段。
昨天我试图在这些字段中添加验证回调函数,我在表单数组中看到了一些奇怪的东西。 type =“text”的字段具有路径:
$form[field_name]['und'][0][value] //<! expectable
但是type ='list_text'的字段只有路径:
$form[field_name]['und'] //<! unexpectable
我找不到任何解决方案,我用这个解决了它:
function &get_cck_path_value( $field_name, &$form_path) {
$field = null
if ( isset( $form_path[$field_name][LANGUAGE_NONE] ) ) {
$field = &$form_path[$field_name][LANGUAGE_NONE]
}elseif(isset($form_path[$field_name][LANGUAGE_NONE][0])) {
$field = &$form_path[$field_name][LANGUAGE_NONE][0]['value'];
}
return $field;
}
我不喜欢这种做法。真是个傻瓜。你能告诉我这是一个cck功能还是bug? 我无法理解何时决定放置值的位置(通过“field_attach_form(...)”完成所有过程)?
你遇到过这样的问题吗?
提前致谢。
Thandem。
答案 0 :(得分:1)
我相信您在验证中看到缩写的表单字段,因为该字段没有输入任何值,也没有为其定义默认值。没有值,因此不存在用于存储值的数组。