Переменная CakePHP становится пустой - PullRequest
0 голосов
/ 19 декабря 2009
<?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 голосов
/ 20 декабря 2009

Я могу придумать пару вещей, которые попробую, хотя нельзя сказать, что вы еще этого не сделали.

  • echo $ user и $ event строка перед и сразу после цикла while, чтобы проверить проблемную строку.

  • установить переменные для другой временной переменной:

$ t_user = $ user;

$ t_event = $ event;

затем попробуйте использовать переменные $ t_ в цикле.

0 голосов
/ 19 декабря 2009

Я предполагаю, что в вашей модели есть ошибка. Попробуйте сначала создать массив, распечатать его и посмотреть, правильно ли он создает массив. Затем убедитесь, что ваша модель соответствует массиву, т.е. что типы полей соответствуют типам полей, которые вы вводите. «123» - это не то же самое, что 123, поскольку «123» - это строка, а 123 - целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...