1

Miles Johnson の Uploader プラグインをインストールして、自分のモデルの 1 つにセットアップし、完全に動作するようにしました。非常に素晴らしい。

次に、ほぼ同じコードを使用して別のモデルにセットアップしました [唯一の違いはアップロード パスです]。2 番目のモデルでは機能しません。フォームを送信すると、プラグインが気付かないようです。POST ファイル配列を DB に直接挿入しようとすると、SQL エラーが発生します。

これがコードです。[これ以外のプラグインはブートストラップにインポートされます]

public $actsAs = array( 
    'Uploader.Attachment' => array(
        'photo' => array(
            'name'      => 'formatFileName',    
            'uploadDir' => '/uploads/uses/img/',
            'dbColumn'  => 'photo',
            'maxNameLength' => 30,
            'overwrite' => true,
            'stopSave'  => true,
            'allowEmpty'    => false,
            'transforms' => array(
                array('method' => 'resize', 'width' => 240, 'dbColumn' => 'photo_thumb'))
        )
    ),
    'Uploader.FileValidation' => array(
        'fileName' => array(
            'extension' => array('gif', 'jpg', 'png', 'jpeg'),
            'required'  => true
        )
    )
    );

これはアップロードしていないモデルであり、唯一の違いは uploadDir です。

プラグインは 1 つのモデルでのみ機能しますか? 手がかりはありますか?thnx:}


さらに明確にするために編集する

ここに私のビューコードがあります:

echo $this->Form->create('Use', array('type' => 'file'));
echo $this->Form->input('Use.photo', array('type' => 'file'));
echo $this->Form->input('Use.desc', array('rows' => '3', 'label' => 'Description'));
echo $this->Form->end('Add to Gallery');

そして、ここに私のコントローラコードがあります:

public function add() { 
        if ($this->request->is('post')) {       
            $this->Use->set('user_id', $this->Auth->user('id'));        
            if ($this->Use->save($this->request->data)) {
                $this->Session->setFlash('Your Use has been saved.');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('Unable to add your Use.');
            }
        }
    }
4

2 に答える 2

0

Alessandro と一緒にコードを確認した後 [ありがとう :)] 問題が見つかりました。

ビューとコントローラーのコードを見ると、モデルの名前が「Use」であることがわかります。Use は PHP に読み込まれた単語であり、モデル名に使用すべきではなかったため、これが問題でした。

モデルの名前を Outcome に変更したところ、アップローダーが完全に機能するようになりました。

于 2012-10-22T11:25:50.070 に答える
0

プラグインは 1 つのモデルだけでは機能しません。アップローダをサイトに追加できます。モデルは良いようです。フォームを見て、ビューに正しい方法でフォームを作成したかどうかを確認することをお勧めします (フォームに入れることが重要です:'type' => 'file' 例:

echo $this->Form->create('Product', array ('class' => 'form', 'type' => 'file')); 
echo $this->Form->input('ModelImage.filename', array('type' => 'file'));
echo $this->Form->submit('Add Image', array('id'=>'add_image'));
echo $this->Form->end();

または問題は、Use名前が別の名前に変更しようとすることです

于 2012-10-21T14:34:34.577 に答える