ユーザーがドキュメントを選択するフォームがあります。このドキュメントは、コントローラーによって webroot フォルダーに保存されます。
ただし、フォームが表示される前に、エラーが発生します。
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')); ?>
をコントローラー名に変更するだけでなく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'));
}
}
}
このアクション get は次のように呼び出されます: domain/office_layouts/upload/branch
.
行を削除する$this->Form->create()
と、アップロードビューが表示されますが、明らかに送信されません。
この場合の私の質問は、データベース内のテーブルを検索せずにフォームを作成するにはどうすればよいですか?