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


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

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


Лучший Ответ 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

Изменил 

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

} 

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

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

 

 

 

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

  • 999-1.jpg

  • 0

#2 axeld

axeld

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

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


  • 0

#3 SmetDenis

SmetDenis

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

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

 

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

 

 

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

 

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


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



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


#4 axeld

axeld

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

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

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

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

  • 0

#5 SmetDenis

SmetDenis

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

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

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

$element->bindData([ ... ]);
$element->bindData(['value' => 'qwe']);
$element->bindData([ 0 => ['value' => 'qwe'] ]);
$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

$data = $this->app->data->create($element->data());
$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!