2012-11-19 47 views
1

我使用文件上传元素创建表单。这个文件(图片)必须是用户图片,但没有设置。Drupal 7以编程方式设置用户头像(头像)

形式:

 $form['f']['step4']['file_e'] = array(
    '#title' => t('Image'), 
    '#type' => 'managed_file', 
    '#description' => t('The uploaded image will be displayed on this page using the image style choosen below.'), 
    '#upload_location' => 'public://images/', 
); 

验证

function fill_up_profile_form_validate($form, &$form_state) { 
    global $user; 

    if (isset($form['f']['actions']['submit']['#value']) && $form_state['triggering_element']['#value'] == $form['f']['actions']['submit']['#value']) { 
    $file = file_load($form_state['values']['f']['step4']['file_e']); 
    $validators = array(
     'file_validate_is_image' => array(), 
     'file_validate_size' => array(1 * 1024 * 1024), 
    ); 

    $errors = file_validate($file, $validators); 
    if (!empty($errors)) { 
     $message = ''; 
     foreach ($errors as $error) 
     $message .= $error . '<br/>'; 

     form_set_error('Error!', $message); 
    } else { 
     $file->status = FILE_STATUS_PERMANENT; 
     file_save($file); 
     $edit['picture'] = $file; 
     user_save($user, $edit); 
    } 
    } 
} 

谢谢您的帮助。

+0

是否'$形式[ 'F']'都在'#tree'属性设置就可以了? – Clive

+0

$ form ['#tree'] = TRUE; –

回答

1

您应该尝试使用$ form_state而不是$ form。 $ form_state包含提交的值!另外,对于Drupal 7.x,您无法通过简单地使用$ form_state ['values'] ['f'] ['step4'] ['file_e']来获取值!只要做一个echo "<pre>"; print_R($form_state); echo "</pre>";来学习阵列的正确结构!

也看看这段代码:http://ly2.in/hBMxPK

+0

另外,请查看:http://www.drupaldeveloper.in/node/32&this:http://drupaldeveloper.in/node/33 –

相关问题