4

ユーザーがドキュメントを選択するフォームがあります。このドキュメントは、コントローラーによって 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 __('&emsp;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()と、アップロードビューが表示されますが、明らかに送信されません。

この場合の私の質問は、データベース内のテーブルを検索せずにフォームを作成するにはどうすればよいですか?

4

2 に答える 2

12

の代わりにnull、次を使用しますfalse

echo $this->Form->create( false, array('type' => 'file')); ?>
于 2013-03-01T12:34:56.240 に答える
0

モデルファイルを作成し、そこに配置することで修正しました。

class OfficeLayout extends AppModel {
    var $useTable = false;
}
于 2013-02-28T07:52:44.897 に答える