CakePHP变量变空

时间:2009-12-19 20:02:40

标签: php cakephp

<?php
class UploadsController extends AppController {
var $name = 'Uploads';
var $components = array('Auth');
var $uses = array('Upload');

function beforeFilter() {
    $this->Auth->allow('*');
}

function upload($event) {
    App::import('Vendor', 'UploadedFiles', array('file' => 'UploadedFiles.php'));

    $user = $this->Auth->user('id');
    $this->set('user', $user);
    if(!$this->Auth->user()) { $this->Session->setFlash(__('Please login.', true)); }
    echo $user;
    echo $event;

    $vardir = date('d-m-Y');
    $dir = 'img/gallery/'.$vardir.'/';
    $thmbdir = 'img/gallery/'.$vardir.'/thumbnails/';    
    if(!is_dir($dir)) {
        mkdir($dir, 0777);
        mkdir($thmbdir, 0777);
    }
    $galleryPath = $dir;

    $absGalleryPath = realpath($galleryPath) . '/';
    $absThumbnailsPath = realpath($galleryPath . 'thumbnails/') . '/';

    //Iterate through uploaded data and save the original file, thumbnail, and description.
    while(($file = UploadedFiles::fetchNext()) !== null) {
      $fileName = $file->getSourceFile()->getSafeFileName($absGalleryPath);
      $file->getSourceFile()->save($absGalleryPath . '/' . $fileName);

      $thumbFileName = $file->getThumbnail(1)->getSafeFileName($absThumbnailsPath);
      $file->getThumbnail(1)->save($absThumbnailsPath . '/' . $thumbFileName);

        $this->Upload->create();
        $this->Upload->set(array(
            'name' => $absGalleryPath . $fileName,
            'width' => $file->getSourceFile()->getWidth(),
            'height' => $file->getSourceFile()->getHeight(),
            'description' => $file->getDescription(),
            'event_id' => $event,
            'user_id' => $user
          ));
        $this->Upload->save();
    }
  }
}

检查我尝试保存到数据库的代码的最后部分。它不会保存,因为$ event和$ users变空。但当我回显它们时(第17行和第18行),它们会在页面上显示正确的值。似乎他们在while循环中被“删除”了...... 如果我为'event_id' => '123''user_id' => '123'添加了一些虚拟数据,则脚本会成功保存。但是,如果我使用变量,它就不会保存。 我的变量会怎样??有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

我猜你的模型中有错误。首先尝试创建数组并打印它,然后查看它是否正确创建了数组。然后确保您的模型与数组匹配,即。字段类型与您输入的字段类型匹配。 '123'与123不同,因为'123'是一个字符串,123是一个整数。

答案 1 :(得分:0)

我可以想到一些我会尝试的东西虽然不是说你还没有。

  • 在while循环之前和之后回显$ user和$ event,以验证有问题的行。

  • 将变量设置为另一个临时变量:

  

$ t_user = $ user;

     

$ t_event = $ event;

然后尝试在循环中使用$ t_变量。