0 Пользователей и 1 Гость просматривают эту тему.
  • 15 Ответов
  • 355 Просмотров
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
Здравствуйте!
В компоненте формирования заявок от пользователей, среди прочей информации, которую вводит пользователь, должна быть загрузка изображения (.png), которое надо сохранить на сервере и записать в БД.
В site/com_odere/views/html/default.php поле для файла представлено в блоке Структурная формула (name=img_png):
Спойлер
[свернуть]
в
В site/com_order/models/forms/ поле представлено (среди прочих полей):
Спойлер
[свернуть]
В site/com_order/controllers/registration/ register.php
Код
		$app   = JFactory::getApplication();
/* файл */
$jinput = $app->input;
if ($file = $jinput->files->get('img_png', null, 'files', 'array')) {
if ($filename = JFile::makeSafe($file['name'])) {
             $src = $file['tmp_name'];              
            $path =JPATH_SITE ."/components/com_order/assets/images/";
            $dest =$path.'uploaded_files '.$filename;
           if (JFile::upload($src, $dest)) {
JFile::delete($dest);
 } else {
                              JFactory::getApplication()->enqueueMessage('Не получается обработать файл', 'error');
                           }
} else {
JFactory::getApplication()->enqueueMessage('Нет названия файла', 'error');
}
} else {
JFactory::getApplication()->enqueueMessage('Нет файла', 'error');
}
Так вот у меня получается 'Нет файла'
Все остальные поля формы сохраняются, а вот изображение получить не могу.
Правда, в компоненте вид формы зависит от типа записи, и в модели я подставляю нужную форму
Спойлер
[свернуть]
« Последнее редактирование: 17.01.2017, 11:35:47 от GuDeVic »
*

SmokerMan

  • Профи
  • 5334
  • 690
Цитировать
$file = $jinput->files->get('img_png', null, 'files', 'array')
это что за зверь? откуда там четвертый параметр взялся?)
сделать var_dump($_FILES) и посмотреть что приходит
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
это что за зверь? откуда там четвертый параметр взялся?)
сделать var_dump($_FILES) и посмотреть что приходит
Вот отсюда взяла (от Fedor Vlasenko) http://joomlaforum.ru/index.php?topic=263530.0
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
Да, var_dump($_FILES) (в модели)правильно изображение представляет
Спойлер
[свернуть]
« Последнее редактирование: 17.01.2017, 12:42:46 от GuDeVic »
*

SmokerMan

  • Профи
  • 5334
  • 690
а если так?
Цитировать
$files = $jinput->files->get('jform', null, 'array');
if (!empty($files)) {
    foreach ($files as $file) {
        var_dump($file);
    }
}
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
а если так?
Тогда получается так:
Спойлер
[свернуть]
« Последнее редактирование: 17.01.2017, 13:38:37 от GuDeVic »
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
Спасибо.
Я вставила var_dump, на экране появились сведения о загружаемом файле, и только они.
Убираю var_dump - сохраняю файлы, архивирую, загружаю компонент - ничего не меняется.
Всё выглядит так, как будто продолжается работа с неисправленным компонентом.
И наоборот, если возвращаюсь к версии, где не было var_dump и вставляю команду var_dump - тоже ничего не меняется, как будто этой команды нет.
Ничего понять не могу - ведь как-то же первый раз по Вашему совету вставила.

*

SmokerMan

  • Профи
  • 5334
  • 690
Убираю var_dump - сохраняю файлы, архивирую, загружаю компонент - ничего не меняется.
Всё выглядит так, как будто продолжается работа с неисправленным компонентом.
что архивирую и куда загружаю?)
и причем здесь var_dump?
это я просто написал для отладки что бы можно посмотреть приходит файл или нет
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
что архивирую и куда загружаю?)
и причем здесь var_dump?
это я просто написал для отладки что бы можно посмотреть приходит файл или нет
var_dump  я вставляла в контроллер и в метод register (сохранение записи) в модели. Потом эти команды убрала (закомментировала), сохранила файлы, заархивировала компонент, загрузила его, но после загрузки всё выглядело так, как будто dump_var не убран.
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
Код
JFile::makeSafe($file['name'])
Оффтоп - и это всё? Маловато для проверки

https://cmscafe.ru/razrabotka/547-sozdaem-bezopasnye-rasshireniya-dlya-joomla#file-uploads


У Вас сейчас дыра, как было у AdsManager [topic=331637]
Спасибо. Маловато будет! Это просто для тестирования возможности загрузки.
Ещё раз спасибо за дыру, в смысле, что, скорее всего это дыра, а не я сошла с ума (пока что).
Что делать? Удавиться?
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
AdsManager у меня нет, а вот ajaxupload вчера вечером установила. Может совпадение, конечно, но в своём компоненте до загрузки изображений не дошла, тк. не могла получить информацию о загруженном файле (именно поэтому я и обратилась за помощью)
*

SmokerMan

  • Профи
  • 5334
  • 690
var_dump  я вставляла в контроллер и в метод register (сохранение записи) в модели. Потом эти команды убрала (закомментировала), сохранила файлы, заархивировала компонент, загрузила его, но после загрузки всё выглядело так, как будто dump_var не убран.
причем тут сборка и установка?
все манипуляции надо производить в файлах на уже установленном расширении, а потом уже когда все готово и работает думать уже о его сборке, упаковке и т.д.
файл то получилось загрузить или нет? :)

*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
причем тут сборка и установка?
все манипуляции надо производить в файлах на уже установленном расширении, а потом уже когда все готово и работает думать уже о его сборке, упаковке и т.д.
файл то получилось загрузить или нет? :)



Речь идёт о компонентне, который надо было дополнить возможностью загрузки пользователем файла(изображения). Т.е. пользователь выбирает тип заявки, заполняет её, заявка поступает исполнителю и тд и тп.  Но. Теперь понадобилось форму заявки дополнить возможностью ввода структурной формулы (изображение.png), чтобы исполнитель имел доп. информацию. В этом компоненте я пыталась сделать загрузку файла.
Пока не получилось. Потому что ...не знаю, что случилось, но ни print_r, ни var_dump..Ладно, попробую успокоиться.
Не сама же я от руки написала
Код
array(1) { ["jform"]=> array(5) { ["name"]=> array(1) { ["img_png"]=> string(23) "Gerb_Novosibirsk_50.png" } ["type"]=> array(1) { ["img_png"]=> string(9) "image/png" } ["tmp_name"]=> array(1) { ["img_png"]=> string(14) "/tmp/php0HB8TX" } ["error"]=> array(1) { ["img_png"]=> int(0) } ["size"]=> array(1) { ["img_png"]=> int(5413) } } }
Так как к этому массиву обратиться, чтобы прочесть имя загруженного файла, если у поля имя img_png?
*

fsv

  • Практически профи
  • 2526
  • 368
Цитировать
Так как к этому массиву обратиться, чтобы прочесть имя загруженного файла, если у поля имя img_png?
В контроллере:
Код: php
$files = $this->input->files->get('jform', array(), 'array');
foreach( $files['img_png'] as $img )
{
    //todo
}

Попробуйте более четко излагать мысли. Ничего не понятно в теме.
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
В контроллере:
Код: php
$files = $this->input->files->get('jform', array(), 'array');
foreach( $files['img_png'] as $img )
{
    //todo
}

Попробуйте более четко излагать мысли. Ничего не понятно в теме.

Вообще-то в теме было написано и про компонент, и про проблему, и приведены  коды.
« Последнее редактирование: 18.01.2017, 21:14:10 от GuDeVic »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Удаление в самописном компоненте компоненте

Автор phpCoder

Ответов: 8
Просмотров: 289
Последний ответ 25.11.2016, 09:09:56
от phpCoder
Как в компоненте Backend получить чистый экран без системного джумловского меню ?

Автор tm2010

Ответов: 30
Просмотров: 707
Последний ответ 10.02.2016, 19:34:41
от Aleks.Denezh
Создание динамических полей в своем компоненте

Автор NeuroZ

Ответов: 14
Просмотров: 606
Последний ответ 18.08.2015, 11:17:59
от b2z
Обработка данных в компоненте перед сохранением

Автор ipservice

Ответов: 2
Просмотров: 311
Последний ответ 27.07.2015, 12:46:01
от ipservice
Выборка из нескольких таблиц в компоненте Joomla 3.0

Автор dmuradz

Ответов: 2
Просмотров: 433
Последний ответ 06.02.2015, 11:00:07
от Aleks.Denezh