我有一個表單,用戶在其中選擇一個文檔。然後,該文檔由控制器保存到webroot文件夾中。在CakePHP中創建一個與模型無關的表單
然而,它甚至可以顯示錶單之前,它給了我一個錯誤:
Missing Database Table
Error: Table office_layouts for model OfficeLayout was not found in datasource default.
哪個是正確的,對於office_layouts沒有數據庫表。但它不是必需的。這就是爲什麼沒有桌子。表單只是上傳到服務器。
我已經通過創建表單讀取,並且已經嘗試了以下內容:
// file: View/OfficeLayout/upload.ctp
echo $this->Form->create(null ,array('type' => 'file')); ?>
<fieldset>
<legend><?php echo __(' Add Layout for ' . $branch); ?></legend>
<?php
echo $this->Form->input('layout',array('type'=>'file'));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
除了chaning的null
到控制器的名稱(在此情況下OfficeLayout
)。我也已刪除所有參數(thus creating it like so: $this->Form->create()
)
在我的控制器我有以下幾點:
public function upload($branch = null) {
$this->set('branch',$branch);
if(isset($this->request->data['OfficeLayout'])) {
$file = $this->request->data['OfficeLayout']['layout'];
if($file['error'] === UPLOAD_ERR_OK && move_uploaded_file($file['tmp_name'],APP . 'docs' . DS . 'layouts' . DS . $branch . '.pdf')) {
$this->Session->setFlash('New layout successfully uploaded.','default',array('class'=>'notification'));
$this->redirect(array('action'=>$branch));
} else {
$this->Session->setFlash('Error uploading layout. Please contact web admin.','default',array('class'=>'error'));
}
}
}
這個動作獲取的調用:domain/office_layouts/upload/branch
。
每當我刪除$this->Form->create()
行時,它顯示上傳視圖,但顯然不提交。
所以我在這種情況下的問題是,我怎麼能創建一個窗體,沒有它在數據庫中查找表?
啊,太棒了! :d – Albert 2013-03-01 12:56:40