আমি কিছু বিষয় হচ্ছে managed_file প্রকার। যখনই আমি কোনও ফর্ম সম্পাদনা এবং সংরক্ষণ করার চেষ্টা করি যা এর মধ্যে পরিচালিত_ফায়াল উপাদান রয়েছে তবে ত্রুটি ঘটে: চিত্র ক্ষেত্রে ব্যবহৃত ফাইলটি রেফারেন্স নাও দেওয়া যেতে পারে।
এই কোডটি আমি ব্যবহার করছি:
function foo_form ($form, &$form_state, $foo) {
...
$form['file'] = array(
'#type' => 'managed_file',
'#title' => t('Picture'),
'#default_value' => (isset($foo->file->fid) ? $banner->foo->fid : ''),
'#upload_location' => variable_get('foo_upload_location'),
);
if (isset($foo->file)) {
$form['current_file'] = array(
'#type' => 'hidden',
'#value' => $foo->file->fid,
);
}
...
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
return $form;
}
function foo_form_submit ($form, &$form_state) {
$foo = (object)$form_state['values'];
$current_file_set = isset($form_state['values']['current_file']);
if ($form_state['values']['file'] != 0 && !$current_file_set) {
// Load the file uploaded in the form.
$file = file_load($form_state['values']['file']);
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
$foo->file = $file->fid;
} else if ($form_state['values']['file'] != 0 && $current_file_set) {
// If we are uploading a different picture, delete the old one and save the
// new one. If not, don't do anything.
if ($form_state['values']['current_file'] != $form_state['values']['file']) {
file_delete(file_load($form_state['values']['current_file']));
// Load the file uploaded in the form.
$file = file_load($form_state['values']['file']);
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
$foo->file = $file->fid;
}
} else {
file_delete(file_load($form_state['values']['current_file']));
$foo->file = null;
}
...
}
আমি মডিউল / ফাইল / file.module এ file_managed_file_ediaate ফাংশন ফিরে ত্রুটি সনাক্ত করেছি কিন্তু ফাইল রেফারেন্স সম্পর্কে কিছুই জানি না।