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


Фото
* * * * * 2 голосов

[2.*] Прикрепленные файлы

файлы документация

  • Чтобы отвечать, сперва войдите на форум
54 ответов в теме

#41 Julius123

Julius123
  • Пользователь
  • 249 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 01.11.2017 - 21:39

а ф-я такая $this->image->delete_image есть?

 

как и говорил должно быть не

$this->users->update_user($user->id,

а

$this->users->update_user($this->user->id,

 

и тут тоже самое не

$this->image->delete_image($user->id,

а 

$this->image->delete_image($this->user->id,

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



#42 mishanya

mishanya
  • Фрилансер
  • 2 547 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 01.11.2017 - 21:43

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

 

все правильно, вам нужно ПОСЛЕ

$this->users->update_user($this->user->id, array('image'=>$filename));

выбрать пользотвателя этого, чтобы отдать на страницу новую картинку, т.к. выборка происходит ДО загрузки фото

добавить нужно ЭТО

$this->user = $this->users->get_user(intval($user_id));


#43 Julius123

Julius123
  • Пользователь
  • 249 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 01.11.2017 - 21:47

все правильно, вам нужно ПОСЛЕ

$this->users->update_user($this->user->id, array('image'=>$filename));

выбрать пользотвателя этого, чтобы отдать на страницу новую картинку, т.к. выборка происходит ДО загрузки фото

добавить нужно ЭТО

$this->user = $this->users->get_user(intval($user_id));

 

Добавил, получилось вот так, но все равно только после перезагрузки обновляется.

 

// Удаление аватара
                if ($this->request->post('delete_image')) {
                    $this->image->delete_image($this->user->id, 'image', 'users', $this->config->original_users_dir, $this->config->resized_users_dir);
                }
                // Загрузка аватара
                $image = $this->request->files('image');
                if (!empty($image['name']) && ($filename = $this->image->upload_image($image['tmp_name'], $image['name'], $this->config->original_users_dir))) {
                    $this->image->delete_image($this->user->id, 'image', 'users', $this->config->original_users_dir, $this->config->resized_users_dir);
                    $this->users->update_user($this->user->id, array('image'=>$filename));
                    $this->user = $this->users->get_user(intval($user_id));
                }
 

 



#44 mishanya

mishanya
  • Фрилансер
  • 2 547 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 01.11.2017 - 21:49

Добавил, получилось вот так, но все равно только после перезагрузки обновляется.

 

// Удаление аватара
                if ($this->request->post('delete_image')) {
                    $this->image->delete_image($this->user->id, 'image', 'users', $this->config->original_users_dir, $this->config->resized_users_dir);
                }
                // Загрузка аватара
                $image = $this->request->files('image');
                if (!empty($image['name']) && ($filename = $this->image->upload_image($image['tmp_name'], $image['name'], $this->config->original_users_dir))) {
                    $this->image->delete_image($this->user->id, 'image', 'users', $this->config->original_users_dir, $this->config->resized_users_dir);
                    $this->users->update_user($this->user->id, array('image'=>$filename));
                    $this->user = $this->users->get_user(intval($user_id));
                }
 

 

 

еще в после той строки

 

$this->design->assign('user', $this->user);


#45 Julius123

Julius123
  • Пользователь
  • 249 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 01.11.2017 - 21:53

еще в после той строки

 

$this->design->assign('user', $this->user);

Теперь действительно работает все как нужно. Спасибо!



#46 n1c

n1c
  • Пользователь
  • 200 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 30.11.2017 - 11:44

а как сделать, чтобы название картинки менялось если с таким именем уже есть?



#47 mishanya

mishanya
  • Фрилансер
  • 2 547 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 30.11.2017 - 11:55

а как сделать, чтобы название картинки менялось если с таким именем уже есть?

 

как вариант использовать такой же метод как в картинках. добавлять _1, _2, и тд. Images.php



#48 n1c

n1c
  • Пользователь
  • 200 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 01.12.2017 - 13:13

как вариант использовать такой же метод как в картинках. добавлять _1, _2, и тд. Images.php

 

править нужно тут api/Image.php ?

	public function upload_image($filename, $name)
	{
		// Имя оригинального файла
		$name = $this->correct_filename($name);
		$uploaded_file = $new_name = pathinfo($name, PATHINFO_BASENAME);
		$base = pathinfo($uploaded_file, PATHINFO_FILENAME);
		$ext = pathinfo($uploaded_file, PATHINFO_EXTENSION);
		
		if(in_array(strtolower($ext), $this->allowed_extentions))
		{			
			while(file_exists($this->config->root_dir.$this->config->original_images_dir.$new_name))
			{	
				$new_base = pathinfo($new_name, PATHINFO_FILENAME);
				if(preg_match('/_([0-9]+)$/', $new_base, $parts))
					$new_name = $base.'_'.($parts[1]+1).'.'.$ext;
				else
					$new_name = $base.'_1.'.$ext;
			}
			if(move_uploaded_file($filename, $this->config->root_dir.$this->config->original_images_dir.$new_name))			
				return $new_name;
		}

		return false;
	}


#49 shooroop

shooroop
  • Фрилансер
  • 698 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 20.01.2018 - 19:20

Мишань подскажи как вывести в каталоге товаров прикрепляемый файл? Если используем твою инструкцию по добавление прикрепляемого файла к товару



#50 shooroop

shooroop
  • Фрилансер
  • 698 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 28.03.2018 - 16:17

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



#51 Kosjak76

Kosjak76
  • Модератор
  • 3 753 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 28.03.2018 - 16:23

Проверь, куда ты вот это вставил

$files = $this->files->get_files(array('object_id'=>$product->id,'type'=>'product'));
$this->design->assign('cms_files', $files);

Это надо делать, только если есть $product->id



Или в Files.php поставить проверку - если пустой id  товара - возвращаем false



#52 shooroop

shooroop
  • Фрилансер
  • 698 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 28.03.2018 - 16:41

Проверь, куда ты вот это вставил

$files = $this->files->get_files(array('object_id'=>$product->id,'type'=>'product'));
$this->design->assign('cms_files', $files);

Это надо делать, только если есть $product->id



Или в Files.php поставить проверку - если пустой id  товара - возвращаем false

 

действительно не туда в спешке добавил, спасибо

 

$files = $this->files->get_files(array('object_id'=>$product->id,'type'=>'product'));



#53 unrealock

unrealock
  • Пользователь
  • 15 сообщений
  • Дизайн, Программирование, Верстка
  • Откуда:Москва

Опубликовано 06.08.2018 - 16:01

// Удаление файлов
$current_files = $this->files->get_files(array('object_id'=>$product->id,'type'=>'product'));
foreach($current_files as $file)
	if(!in_array($file->id, $files['id']))
			$this->files->delete_file($file->id);
Warning: in_array() expects parameter 2 to be array, null given in mysite\simpla\ProductAdmin.php on line 244

 

Подскажите в чем может быть проблема?

 



#54 phukortsin

phukortsin
  • Пользователь
  • 269 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 06.08.2018 - 17:23

В ошибке кода.

Попробуйте так:

// Удаление файлов
$current_files = $this->files->get_files(array('object_id'=>$product->id,'type'=>'product'));
foreach($current_files as $file)
	if(!is_array($files['id']) || !in_array($file->id, $files['id']))
			$this->files->delete_file($file->id);


#55 unrealock

unrealock
  • Пользователь
  • 15 сообщений
  • Дизайн, Программирование, Верстка
  • Откуда:Москва

Опубликовано 07.08.2018 - 17:38

В ошибке кода.

Попробуйте так:

// Удаление файлов
$current_files = $this->files->get_files(array('object_id'=>$product->id,'type'=>'product'));
foreach($current_files as $file)
	if(!is_array($files['id']) || !in_array($file->id, $files['id']))
			$this->files->delete_file($file->id);

Спасибо







Также с меткой «файлы, документация»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых