Изменить имя файла при добавлении картинки. minishop2

Добавляю изображение вот таким образом.

$data = [
    'id' => 'id продукта',
    'file' => 'путь к файлу',
];

$response = $modx->runProcessor('gallery/upload', $data, [
    'processors_path' => MODX_CORE_PATH . 'components/minishop2/processors/mgr/',
]);

Как при добавлении изменить имя файла?
Евгений
10 декабря 2019, 12:28
modx.pro
455
0

Комментарии: 5

Павел Романов
10 декабря 2019, 13:08
0
Так не работает?
$data = [
    'id' => 'id продукта',
    'file' => 'путь к файлу',
    'name' => 'имя' // тут имя
];
...
    Евгений
    10 декабря 2019, 14:01
    0
    Неа, не работает. Ничего не меняется…
      Павел Романов
      10 декабря 2019, 14:39
      0
      Тогда получать ID нового объекта в ответе и прописывать непосредственно:
      $data = [
          'id' => 'id продукта',
          'file' => 'путь к файлу',
      ];
      
      $response = $modx->runProcessor('gallery/upload', $data, [
          'processors_path' => MODX_CORE_PATH . 'components/minishop2/processors/mgr/',
      ]);
      
      if($gallery = $modx->getObject('msProductFile', $response->response['object']['id'])){
          $gallery->set('name',  'имя'); // тут пишем имя
          $gallery->save();
      }
        Евгений
        10 декабря 2019, 14:52
        0
        Вы меня не совсем поняли наверно.
        Мне нужно чтоб изменилось имя непосредственно самого файла…
        Не название его в базе, а именно файла
        /images/products/321/321_0.jpeg
        уже в папках
    Тодор
    11 декабря 2019, 16:58
    0
    На своих сайтах я всегда делаю вот такой плагин
    <?php
    switch ($modx->event->name) {
        case 'OnFileManagerUpload':
        	$generator = $modx->newObject('modResource');
        	$bases = $source->getBases($directory);
        	$fullPath = $bases['pathAbsolute'].ltrim($directory,'/');
        	$directory = $source->fileHandler->make($fullPath);
        	foreach ($files as $file) {
        		$ext = @pathinfo($file['name'],PATHINFO_EXTENSION);
        		rename($directory->getPath().$file['name'], $directory->getPath() . $generator->cleanAlias($file['name']));
        	}
    	break;
        default: break;
    }
    return true;
    Он для транслитерации всех загружаемых в админку файлов.
    Для этого еще должен быть установлен пакет translit, и сист.настройка «friendly_alias_translit»=«russian»
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5