Перейти к содержимому


Фотография
- - - - -

Импорт из консоли


Лучший Ответ SmetDenis , 11 December 2016 - 21:32

Я привел несколько примеров бинда. Суть у них одна и та же.

В зависимости что вы хотите увидеть в базе данных (структуру массива), такой и нужен аргумент в бинде.

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 6

#1 axeld

axeld

Отправлено 06 December 2016 - 11:11

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

 

Делаю так:

Файл /media/zoo/applications/jbuniversal/framework/elements/user/jbimage.php

Изменил 

  1. class JBCSVItemUserJBImage extends JBCSVItem
  2. {
  3. public function fromCSV($value, $position = null)
  4. {
  5. if ($this->_element->identifier === 'efbc7adc-4d59-4782-83c7-b0efb7d92451') {
  6. // Берем значение из другого элемента материала
  7. if ($element = $this->_item->getElement('a40bd406-6f77-41f8-a9e7-b7ac1131ec3f')) {
  8. $value = "/images/photos/".$element->get('value').".jpg";
  9. }
  10. }
  11. return parent::fromCSV($value, $position);
  12. }
  13.  
  14. } 

В базе теперь так (см. изображение)

Вопрос, как написать, чтобы в массиве было не value а file ?

 

 

 

Прикрепленные изображения

  • 999-1.jpg

  • 0

#2 axeld

axeld

Отправлено 07 December 2016 - 19:02

Столько умных людей на форуме, никто не ответит  ;)


  • 0

#3 SmetDenis

SmetDenis

Отправлено 08 December 2016 - 05:52

Попробуйте сделать так

 

  1. $data = $this->app->data->create($element->data());
  2. $value = $data->find("0.value");
  3.  

 

 

axeld сказал(а) 07 Дек 2016 - 18:02:

Столько умных людей на форуме, никто не ответит  ;)

 

Это видимо вы ко мне?


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#4 axeld

axeld

Отправлено 08 December 2016 - 07:45

SmetDenis сказал(а) 08 Дек 2016 - 04:52:

Это видимо вы ко мне?

  :)  :)  :)  Да 
 
Этот способ работает аналогично первому. Но он работает. Так же в БД создается массив с "value": "\/images\/photos\/30-3480.jpg" , но как убрать value и поставить file . Тогда все картинки на месте у всех товаров. 
  1. "efbc7adc-4d59-4782-83c7-b0efb7d92451": {
  2. "0": {
  3. "value": "\/images\/photos\/30-3480.jpg"
  4. }

Сообщение отредактировал axeld: 08 December 2016 - 13:57

  • 0

#5 SmetDenis

SmetDenis

Отправлено 09 December 2016 - 06:10

Просто используйте другой ключ, т.е вместо value -> file

Либо делайте бинд полного массива данных в нужном формате

  1. $element->bindData([ ... ]);
  2. $element->bindData(['value' => 'qwe']);
  3. $element->bindData([ 0 => ['value' => 'qwe'] ]);
  4. $element->bindData(['file' => '/images/adasd/asdsdas.png']);

  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 axeld

axeld

Отправлено 09 December 2016 - 08:03

Второй вариант мне не понять, не мой уровень.
А в первом варианте, я менял value на file, ничего не приходит, все равно создаётся value

  1. $data = $this->app->data->create($element->data());
  2. $value = $data->find("0.file");

  • 0

#7 SmetDenis

SmetDenis

Отправлено 11 December 2016 - 21:32   Лучший Ответ

Я привел несколько примеров бинда. Суть у них одна и та же.

В зависимости что вы хотите увидеть в базе данных (структуру массива), такой и нужен аргумент в бинде.


  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!