Alb*_*ert 4 php cakephp-2.0 cakephp-model
我有一个用户选择文档的表单.然后,控制器将该文档保存到webroot文件夹中.
但是,在它显示表单之前,它给了我一个错误:
Missing Database Table
Error: Table office_layouts for model OfficeLayout was not found in datasource default.
Run Code Online (Sandbox Code Playgroud)
哪个是正确的,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')); ?>
Run Code Online (Sandbox Code Playgroud)
以及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'));
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个动作GET叫用:domain/office_layouts/upload/branch.
每当我删除该$this->Form->create()行时,它会显示上传视图,但显然不会提交.
所以我在这种情况下的问题是,如何在不在数据库中查找表的情况下创建表单?
Alv*_*aro 12
而不是null,使用false:
echo $this->Form->create( false, array('type' => 'file')); ?>
Run Code Online (Sandbox Code Playgroud)