За последние 24 часа нас посетили 53908 программистов и 1715 роботов. Сейчас ищут 804 программиста ...

Asset is not defined

Тема в разделе "PHP для новичков", создана пользователем denism300, 25 фев 2016.

  1. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    Начинаю изучать написание собственных расширений для Joomla, попутно изучаю PHP
    Есть такой код:
    Код (PHP):
    1. $baseUrl = JUri::base();
    2. foreach($files as $file) {
    3.     $document->addScriptDeclaration("new Asset.image('" . $baseUrl . '/images/' . $file . "');");
    4. } 
    В консоли браузера такая ошибка:
    поиск по интернету ничего толкового не дал

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Какой-то js скрипт не подключен
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Для написания плагинов Joomla скилл php должен быть на уровне "очень крут" (в основе Joomla не самый тривиальный фреймворк лежит). Ну и js тоже.
     
  4. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    все из объявленных подключены - проверял уже не раз
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Найдите, в каком объявляется Asset
     
  6. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    все, я понял причину появления ошибки.
    asset - оператор mootools, а я изучаю написание расширений под Joomla 3, где mootools не используется по умолчанию (если я ничего не путаю).
    в общем, подскажите, как данную строку интерпретировать в jQuery?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а что она делает?
     
  8. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    Загружает изображение из указанной папки и возвращает элемент IMG
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ммм. вам надо вставить просто тег <img> с адресом картинки и усё готово будет.
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    понял. Боюсь что ТС сам не справится.
     
  12. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    Сделал так:
    Код (PHP):
    1. $path = JPATH_ROOT . DS . 'images';
    2. $filter = '\.png$|\.gif$|\.jpg$|\.bmp$|\.ico$';
    3. $files = JFolder::files($path, $filter);
    4.  
    5. foreach($files as $file) {
    6.     $imgPath = $path . DS. $file;
    7.     $document->addScriptDeclaration("$(\"<img />\").attr(\"src\"\"$imgPath\");");
    8.     var_dump($imgPath);
    9. }
    на выходе
    в var_dump путь к картинке верный
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Но в этом же нет никакого смысла :D либо я не понял
     
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А если $ заменить на jQuery ?
     
  15. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    Почему?
    Код предзагрузки я взял отсюда: http://jquery.page2page.ru/index.php5/Предзагрузка_изображений
    Вот он:
    Код (PHP):
    1. function preloadImages() {
    2.     for(var i = 0; i<arguments.length; i++)
    3.     $("<img />").attr("src", arguments[i]);
    4. } 
    если я правильно понял, то непосредственно предзагрузка реализуется вот в этой строке:
    Код (PHP):
    1. $("<img />").attr("src", arguments[i]); 
    у меня в папке сейчас 3 картинки, var_dump выводит все их корректно.
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да, но в этом нет смысла, если ты "пред"загружаешь сразу все картинки. Это имеет смысл, если ты грузишь картинки по мере пролистывания например.

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

    Смысл какой? Чего ты пытаешься добиться-то? Или ты просто на всякий пожарный решил подключить какой-нибудь клевый код?
     
  17. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    смысл такой:
    в админке есть поле типа "выпадающий список", в котором можно выбрать изображение для дальнейшей работы с ним. есть область, в которой показывается миниатюра выбранного изображения. предзагрузку я хочу сделать для того, чтобы при смене изображения не приходилось ждать обновления миниатюры. это не критично, но, как я уже писал, я только начинаю изучать, поэтому, пробую осваивать разные вещи.
    как-то так.
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    при смене изображения ты меняешь изображение и оно загрузится. В принципе можно подгрузить заранее, но опять-таки, у тебя есть реальные проблемы с загрузкой этих изображений? они долго грузятся? Если нет - надо сосредоточиться на основном функционале. Но для практики можно делать что угодно конечно, опыт лишним не будет.
     
  19. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    в принципе, я понял что надо сделать, чтобы заработало, но не понял как.
    Нужно передать содержимое переменной $imgPath в скрипт.
    Я попытался сделать так:
    Код (PHP):
    1. $document->addScriptDeclaration("jQuery('<img />').attr('src', ('<?=$imgPath?>'));");
    но убираются все разделители между папками.

    и еще такой вопрос. есть объект <img>, которому присвоен id вида hello.world
    скриптом я пытаюсь присвоить ему атрибут src
    Код (PHP):
    1. jQuery(document).ready(function() {
    2.     jQuery('img#hello.world').attr('src', jQuery('select#image option:selected').val());
    3. }); 
    но атрибут не присваивается. что я делаю не так?

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  21. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    не совсем понял как это сделать указанным способом.
    там говориться про то, как передать значение какого-либо атрибута тэга, мне надо передать значение переменной php в jQuery так, чтобы сохранились разделитель директорий.
    т.е., к примеру, $imgPath=/images/test/dir/img.jpg
    а в скрипт тем способом, который я реализовал, передается как imagestestdirimg.jpg
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тебе надо в тег его приписать, а в jquery брать src из этого аттрибута.
     
  23. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    ты меня, похоже, не правильно понял.
    в том посте я описал две разные, никак не взаимосвязанные проблемы...
    т.е., вот это первая проблема, которую я пытаюсь решить:
    а вот это не имеющая отношения к первой, вторая проблема:
    как-то так.
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    должен присваиваться, вроде всё верно. Может быть что-то ещё мешает =)
     
  25. denism300

    denism300 Новичок

    С нами с:
    25 фев 2016
    Сообщения:
    39
    Симпатии:
    4
    вот и я считаю, что должен. но не присваивается. в console.log значение jQuery('select#image option:selected').val() выводится корректно
    попробовал ради интереса такую конструкцию:
    Код (PHP):
    1. jQuery(document).ready(function() {
    2.    jQuery('img#hello.world').attr('alt', 'test');
    3. }); 
    тоже не присваивает. ошибок никаких нигде нет.