Как редактировать запись CakePHP, не удаляя путь к загруженному файлу - PullRequest
0 голосов
/ 31 июля 2011

Я хочу отредактировать запись в CakePhp без удаления сохраненного пути загруженного файла jpg.Прямо сейчас, когда я редактирую запись, она удаляет путь к сохраненному файлу.

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

Я использую плагин Miles Johnson для загрузки файлов.

Вот код в форме:

 <?php           
 if (!empty ($slider ['Slider']['bgImg']));
   echo $slider ['bgImg'];  
 else            
   echo $form->input('file', array('type' => 'file'));              
 ?>

1 Ответ

1 голос
/ 01 августа 2011

Строго говоря, эта логика должна присутствовать в контроллере.

В моих приложениях с файлами и возможностями редактирования я покажу в форме редактирования поле файла и ссылку / миниатюру нужного изображения.

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

if (!empty($this->data)) {
    $file_object = $this->data['Listing']['featured_image'];

    $image_data=$this->Upload->do_upload($file_object, 'img/uploads/');

    if($image_data){
        $this->data['Listing']['featured_image'] = $image_data['name'];
    } else {
        unset($this->data['Listing']['featured_image']);
    }

$this->Listing->save($this->data)

и в моем компоненте загрузки у меня есть это:

public function do_upload($file_object, $location='img/uploads/') {
    /**
     * No file was uploaded
     */
    if($file_object['error']==4) {
        return false;
    }
    // carry on uploading

Так по существу;Я передаю свой компонент загрузки $file_object, который взят из формы.Затем я делаю простой тест, используя набор кодов ошибок по умолчанию, чтобы проверить, пуст ли файл (4).Если он пуст, я возвращаю false.(вы могли возвращать ошибки и т. д., но это был мой подход).

после вызова загрузки я проверяю возвращаемое значение, и если файл был успешно загружен, я могу установить поле в моей модели.(имя файла, в моем случае) - вы также можете сохранить путь, например.

Если это false - это значит, что файла не было;поэтому я сбрасываю значение из массива.

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

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