2009-12-19 3 views
0
<?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', скрипты будут успешно сохранены. Но если я использую переменные, это не спасет. Что происходит с моими переменными? Есть идеи?CakePHP Переменная становится пустой

Благодаря

ответ

0

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

+0

Вы можете проверить эту гипотезу, переведя значения в строку: 'event_id '=> (string) $ event, user_id' => (string) $ user' –

+0

Hi Tor, В массиве модели нет ошибки. Оба «123» и 123 сохраняются. Я просто не понимаю, как можно очистить переменную $ event? – octavian

+0

Привет, Эйван, я попробовал, и он вставляет пустое поле. Опять же, значение $ event пустое ... но когда я повторяю его в строке 17, это 11042 ... – octavian

0

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

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

  • установить переменные в другую переменную TEMP:

$ t_user = $ пользователя;

$ t_event = $ event;

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

Смежные вопросы