繼續。 - Add File Uploader to Joomla Admin Component如何保存數據庫上傳的文件名
我能夠上傳文件並將其保存在磁盤上。但它沒有在數據庫上保存文件名。
我該怎麼辦?
這裏是控制器 -
class InvoiceManagerControllerInvoiceManager extends JControllerForm
{
function save(){
$file = JRequest::getVar('jform', null, 'files', 'array');
$path = JPATH_BASE;
// Make the file name safe.
jimport('joomla.filesystem.file');
$file['name']['invoice'] = JFile::makeSafe($file['name']['invoice']);
// Move the uploaded file into a permanent location.
if (isset($file['name']['invoice'])) {
// Make sure that the full file path is safe.
$filepath = JPath::clean($path. DS ."components". DS ."com_invoicemanager". DS ."files". DS .strtolower($file['name']['invoice']));
// Move the uploaded file.
JFile::upload($file['tmp_name']['invoice'], $filepath);
}
return parent::save();
}
}
窗體域XML -
<field name="invoice" type="file"/>
UPDATE: 增加從@Andras格拉代碼採取以下幾行後工作
$data = JRequest::getVar('jform', null, 'post', 'array');
$data['invoice'] = strtolower($file['name']['invoice']);
JRequest::setVar('jform', $data);
我認爲我們應該將更改後的$數據傳遞迴POST方法,因爲parent :: save()會返回到系統save()。不知何故,如果我添加$數據save()函數它不會很好。保存所有內容,但只有文件字段在數據庫中爲空。 –
你找到了嗎? – ChamingaD
是的,它解決了!感謝Irfan提及setVar函數。他的解決方案不起作用,因爲它創建了另一條記錄,而不是將所需的變量放入$ _REQUEST數組中的jform數組中。 我的解決方案是覆蓋jform變量。 –