请问有第三方模块在自定义表单时,直接使用过fieldfield和imagefield类型的表单字段吗?我想看下怎么调用的具体 论坛: 有问必答Drupal版本: drupal7 这个是不行的,fieldfield和imagefield类 这个是不行的,fieldfield和imagefield类型的表单字段,只显示在实体的表单页面。 除非这样,你的表单里面包含对应的实体表单,这样可以把fieldfield和imagefield类型放进自己的表单中。 我曾经这样用过,供参考: function 我曾经这样用过,供参考: function userreg_school_register_form($form, &$form_state){ $form = array(); global $user; $form['name'] = array( '#type' => 'textfield', '#title' => t('用户名'), '#required' => TRUE, '#weight' => 96, ); $form['mail'] = array( '#type' => 'textfield', '#title' => t('电子邮箱'), '#required' => TRUE, '#weight' => 97, ); $form['pass'] = array( '#type' => 'password_confirm', //'#title' => t('密码'), '#required' => TRUE, '#weight' => 98, ); $form['title'] = array( '#type' => 'textfield', '#title' => t('机构/学院学校名'), '#required' => TRUE, '#attributes' => array('class' => array('company_name')), ); $node = (object) array( 'uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'type' => 'jigou', 'language' => LANGUAGE_NONE ); //$form = drupal_get_form('node_form',$node); field_attach_form('node', $node, $form, $form_state); $form['actions'] = array('#type' => 'actions'); $form['actions']['submit'] = array( '#type' => 'submit', '#value' => t('注册'), ); $form['#validate'][] = 'userreg_school_register_form_validate_handler'; $form['#submit'][] = 'userreg_school_register_form_submit_handler'; return $form; } 这里面,通过field_attach_form('node', $node, $form, $form_state);,将节点上面的字段追加了进来。 不过对于这些字段,提交的时候,还需要 field_attach_submit('node', $pseudo_entity, $form, $form_state); 总之,不是不可以,是比较麻烦,只有熟悉了字段、实体背后的机制,才能这样调用。 额,有时候需求比较随意,有个自定义表单甚至没有用drupa 额,有时候需求比较随意,有个自定义表单甚至没有用drupal的方式定义的小表单需要一个文件上传效果。 不过查看了下file模块里的相关代码,终于是把filefield效果弄出来了: function ***_form() { $form['test_file'] = array( '#type' => 'managed_file', '#title' => t('test file'), '#upload_location' => file_default_scheme() . '://', '#default_value' => variable_get('test_file', ''), '#upload_validators' => array('file_validate_extensions' => array('gif png jpg')) ); } 但是imagefield还是不知道怎么弄。
这个是不行的,fieldfield和imagefield类 这个是不行的,fieldfield和imagefield类型的表单字段,只显示在实体的表单页面。 除非这样,你的表单里面包含对应的实体表单,这样可以把fieldfield和imagefield类型放进自己的表单中。
我曾经这样用过,供参考: function 我曾经这样用过,供参考: function userreg_school_register_form($form, &$form_state){ $form = array(); global $user; $form['name'] = array( '#type' => 'textfield', '#title' => t('用户名'), '#required' => TRUE, '#weight' => 96, ); $form['mail'] = array( '#type' => 'textfield', '#title' => t('电子邮箱'), '#required' => TRUE, '#weight' => 97, ); $form['pass'] = array( '#type' => 'password_confirm', //'#title' => t('密码'), '#required' => TRUE, '#weight' => 98, ); $form['title'] = array( '#type' => 'textfield', '#title' => t('机构/学院学校名'), '#required' => TRUE, '#attributes' => array('class' => array('company_name')), ); $node = (object) array( 'uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'type' => 'jigou', 'language' => LANGUAGE_NONE ); //$form = drupal_get_form('node_form',$node); field_attach_form('node', $node, $form, $form_state); $form['actions'] = array('#type' => 'actions'); $form['actions']['submit'] = array( '#type' => 'submit', '#value' => t('注册'), ); $form['#validate'][] = 'userreg_school_register_form_validate_handler'; $form['#submit'][] = 'userreg_school_register_form_submit_handler'; return $form; } 这里面,通过field_attach_form('node', $node, $form, $form_state);,将节点上面的字段追加了进来。 不过对于这些字段,提交的时候,还需要 field_attach_submit('node', $pseudo_entity, $form, $form_state); 总之,不是不可以,是比较麻烦,只有熟悉了字段、实体背后的机制,才能这样调用。
额,有时候需求比较随意,有个自定义表单甚至没有用drupa 额,有时候需求比较随意,有个自定义表单甚至没有用drupal的方式定义的小表单需要一个文件上传效果。 不过查看了下file模块里的相关代码,终于是把filefield效果弄出来了: function ***_form() { $form['test_file'] = array( '#type' => 'managed_file', '#title' => t('test file'), '#upload_location' => file_default_scheme() . '://', '#default_value' => variable_get('test_file', ''), '#upload_validators' => array('file_validate_extensions' => array('gif png jpg')) ); } 但是imagefield还是不知道怎么弄。
这个是不行的,fieldfield和imagefield类
这个是不行的,fieldfield和imagefield类型的表单字段,只显示在实体的表单页面。
除非这样,你的表单里面包含对应的实体表单,这样可以把fieldfield和imagefield类型放进自己的表单中。
我曾经这样用过,供参考: function
我曾经这样用过,供参考:
function userreg_school_register_form($form, &$form_state){
$form = array();
global $user;
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('用户名'),
'#required' => TRUE,
'#weight' => 96,
);
$form['mail'] = array(
'#type' => 'textfield',
'#title' => t('电子邮箱'),
'#required' => TRUE,
'#weight' => 97,
);
$form['pass'] = array(
'#type' => 'password_confirm',
//'#title' => t('密码'),
'#required' => TRUE,
'#weight' => 98,
);
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('机构/学院学校名'),
'#required' => TRUE,
'#attributes' => array('class' => array('company_name')),
);
$node = (object) array(
'uid' => $user->uid,
'name' => (isset($user->name) ? $user->name : ''),
'type' => 'jigou',
'language' => LANGUAGE_NONE
);
//$form = drupal_get_form('node_form',$node);
field_attach_form('node', $node, $form, $form_state);
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('注册'),
);
$form['#validate'][] = 'userreg_school_register_form_validate_handler';
$form['#submit'][] = 'userreg_school_register_form_submit_handler';
return $form;
}
这里面,通过field_attach_form('node', $node, $form, $form_state);,将节点上面的字段追加了进来。
不过对于这些字段,提交的时候,还需要
field_attach_submit('node', $pseudo_entity, $form, $form_state);
总之,不是不可以,是比较麻烦,只有熟悉了字段、实体背后的机制,才能这样调用。
额,有时候需求比较随意,有个自定义表单甚至没有用drupa
额,有时候需求比较随意,有个自定义表单甚至没有用drupal的方式定义的小表单需要一个文件上传效果。
不过查看了下file模块里的相关代码,终于是把filefield效果弄出来了: