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

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Здравствуйте.

Кнопка Сохранить располагается в структуре, приведенной во вложении.

Как в например Chrome ищется файл с функцией, которая начинает отрабатывать первой по нажатию этой кнопки?

Нашел в index.php вот такой код:
Код
<script type="text/javascript">

//<![CDATA[
Joomla.submitbutton=function(a){
var options = { path: '/', expires: 2}
if (a == 'apply') {
var idx = jQuery('#tabs li.current').index();
jQuery.cookie('vmapply', idx, options);
} else {
jQuery.cookie('vmapply', '0', options);
}
jQuery( '#media-dialog' ).remove();
Joomla.submitform(a);
};
//]]>...
Только не понимаю, как искать дальше и на тот ли след я напал :)
Где-то по цепи запускается SQL запрос, который надо найти и изменить

Благодарю
« Последнее редактирование: 27.05.2013, 16:29:57 от borro »
*

varX

  • Практически профи
  • 1611
  • 105
  • разработка компонентов
Вы браузером серверные функции пытаетесь искать, я правильно понял?
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Вы браузером серверные функции пытаетесь искать, я правильно понял?
вот это мысль :) может и так. не знаю как докопаться до места, которое формирует UPDATE запрос к БД. У вас есть идеи?
*

Arkadiy

  • Группа развития
  • 5350
  • 440
  • Крепитесь, други.
Если это действительно тот скрипт, который обрабатывает клик, то смотрите куда передается форма т.к. скрипт просто передает фому куда она просится. Чтобы проверить тот-ли это скрипт, поставьте во вкладке "Скрипт" FireBug стоп где-нибудь в этом скрипте, если стоп сработает - значит скрипт тот.
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Похоже мне надо научиться пользоваться каким-нибудь IDE. NetBeans?
*

varX

  • Практически профи
  • 1611
  • 105
  • разработка компонентов
Похоже мне надо научиться пользоваться каким-нибудь IDE. NetBeans?

Это уже подает надежды. Но я бы рекомендовал блокнот.
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Это уже подает надежды. Но я бы рекомендовал блокнот.
я посмотрел - никаких хранимых процедур, триггеров, функций в базе нет. значит UPDATE запрос генерится в файлах?
*

smart

  • Администратор
  • 6846
  • 1298
Где-то по цепи запускается SQL запрос, который надо найти и изменить
Скорее всего в недрах JDatabaseTable (libraries/joomla/database/table.php), но это функция ядра. А перед тем, как оно будет вызвано - вызовется контроллер из /components/com_mycomponent/ (или /administrator/components/com_mycomponent), где mycomponent - название компонента.
*

Arkadiy

  • Группа развития
  • 5350
  • 440
  • Крепитесь, други.
Если собрать все скрытые инпуты и action формы то в 99% случаев эта информация исчерпывающе показывает на файл и функцию к которому(которой) форма обращается.
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Скорее всего в недрах JDatabaseTable (libraries/joomla/database/table.php), но это функция ядра. А перед тем, как оно будет вызвано - вызовется контроллер из /components/com_mycomponent/ (или /administrator/components/com_mycomponent), где mycomponent - название компонента.
Здравствуйте. Смотрел урок от Lynda.com по написанию расширений под Joomla. Наверно от слабого английского плохо понял. Вы бы могли посоветовать русскоязычное видео или текст, по которому можно понять состав, функцию и последовательность взаимодействия основных программных частей/модулей(хелперы и пр.) Joomla?

Похоже нашел функцию, которая записывает данные в БД:
function save($data = 0) в файле vmcontroller.php
Думаю в ней поставить debug_backtrace, чтобы добраться до места, где запросы генерятся. Почему-то если в ее теле использую var_dump(), не видно его вывода в админке, как будто новая страница загружается и не успеваю увидеть вывода. Есть ли в php команда "СТОП"? Думаю все-таки в IDE это правильнее делать
« Последнее редактирование: 28.05.2013, 10:29:27 от borro »
*

Arkadiy

  • Группа развития
  • 5350
  • 440
  • Крепитесь, други.
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
die();
exit;
Благодарю.
поставил NetBeans, создал проект, указав папку локального сайта. Нажимаю Отладка проекта - запускается фронтенд сайта со довесом XDEBUG_SESSION_START=netbeans-xdebug в адресной строке, но при этом  в NetBeans все время бегает ползунок о том, что NetBeans все ожидает подключения и никак не подключится. Похоже Неправильно настроил. Посоветуйте пожалуйста статью как отлаживать под NetBeans локальный сайт. Не нашел. Хотя можно и по любой другой IDE.
« Последнее редактирование: 28.05.2013, 14:12:47 от borro »
*

Aleks.Denezh

  • Практически профи
  • 2806
  • 377
Если поставите PhpStorm то расскажу как настроить отдадку в нем ) нетбиносом уже давно не пользуюсь... уж очень он слабый стал по сравнению с штормом!
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016
*

smart

  • Администратор
  • 6846
  • 1298
уж очень он слабый стал по сравнению с штормом!
+100500
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Если поставите PhpStorm то расскажу как настроить отдадку в нем ) нетбиносом уже давно не пользуюсь... уж очень он слабый стал по сравнению с штормом!
закачиваю 5 версию в надежде не сильно перегрузить мою слабую рабочую машину. Можете начать рассказывать :)
*

Aleks.Denezh

  • Практически профи
  • 2806
  • 377
Все очень просто )
1. Создаем проект (достаточно просто нажать open directory и указать папку с сайтом на локале)
2. как проект прогрузился на панели инструментов  нажимаем на стрелочку

и там появится "Edit Configuration..." нажимаем по нему
3. увидим такое окошко в  нем в самом верху нажимаем на плюсик и выбираем "PHP Web Application"

4. появится окошко в котором вводим название проекта в поле "Name"
5. В поле Server есть кнопочка с тремя точками нажимаем на неё появится ещё одно окошко которое надо нажать на кнопку плюс и заполнить приблизительно так:

тоесть в поле host указываете путь к сайту который вы набираете в браузере у вас может быть localhost просто например! и нажимаем кнопку ок!
в предыдыщем окне должно стать так:

дописываем в поле "Start URL" после слеша index.php и нажимаем окей! настройка завершена!

дальше ставим точку остановки

и жмем по кнопке с тараканом (Debug или Run->debug или shift f9)
Если все настроенно правильно(Xdebug)
то сайт зависнет (как только перейдет к выполнению этой точки остановик), как будто не может загрузится и должен замигать phpStorm
после этого наш редактор станет таким:

при наведение на переменные до точки остановки, через несколько секунд, будет вылетать окошко где можно посмотреть их значение
ну и плюс в окошке Variables можно это посмотреть!
« Последнее редактирование: 28.05.2013, 17:18:03 от Istaan »
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Здравствуйте.
Когда запускается отладка возникает сообщение
Цитировать
C:\xampp\php\php.exe C:\xampp\htdocs\antilopa2\administrator\components\com_virtuemart\helpers\vmcontroller.php
Fatal error: Call to undefined function jimport() in C:\xampp\htdocs\antilopa2\administrator\components\com_virtuemart\helpers\vmcontroller.php on line 21
Call Stack:
    0.0011     444936   1. {main}() C:\xampp\htdocs\antilopa2\administrator\components\com_virtuemart\helpers\vmcontroller.php:0
Process finished with exit code 255
PHPStorm 6. В чем может быть причина? Может нельзя напрямую отлаживать vmcontroller.php, а надо поставив точку останова в vmcontroller.php запускать index.php сайта?

также хочу спросить, как понимать что entity is depricated? - много методов перечеркнуто при просмотре php кода
« Последнее редактирование: 05.06.2013, 13:47:39 от borro »
*

SDKiller

  • Dev Team
  • 2734
  • 320
  • ...ergo sum
Вот давно бы нашли уже )

Joomla.submitform($a) отправляет форму с task=$a - в вашем случае 'apply'

По action формы посмотрите - в какой контроллер будет передаваться этот task

В контроллере в функции registerTask ищите какой на самом деле метод сопоставлен 'apply'

А уж в этом методе контроллера будет большая вероятность найти ваш update запрос (ну или хотя бы отследить выполнение далее до модели или таблицы).


Полагаться на отладку Joomla-проектов в IDE не стОит - некоторые специфические методы автозагрузки классов IDE могут не понять.
Тот же PhpStorm не предложит вам ничего для объекта полученного через J...::getInstance() - если только вы явно в phpdoc-е не укажете тип объекта, который получаете.
Хотя многие фреймворки он нативно поддерживает, тот же Yii
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Благодарю. C вами так и до просветления недалеко :)
в action формы стоит "index.php". раз кнопка стоит в админке, то это файл /administrator/index.php?
В контроллере в функции registerTask ищите какой на самом деле метод сопоставлен 'apply'
Получается файл контроллера - это /administrator/index.php? Там нет registerTask
« Последнее редактирование: 05.06.2013, 14:06:18 от borro »
*

SDKiller

  • Dev Team
  • 2734
  • 320
  • ...ergo sum
в action формы стоит "index.php"...

Ну гляньте hidden инпуты в конце формы - там будут или controller или view
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Ну гляньте hidden инпуты в конце формы - там будут или controller или view

да, нашел, "product" там было. верно пали подозрения на vmcontroller.php, die() помог это понять, надо не бояться его применять.
В этом файле есть функция $model->store($data);
Погружаюсь далее и видимо в vmmodel.php...

Поклон!
« Последнее редактирование: 05.06.2013, 15:06:03 от borro »
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
В функции save файла vmcontroller.php есть строки

Код
...
$model = VmModel::getModel($this->_cname);
$id = $model->store($data);
...
Если открыть файл administrator/components/com_virtuemart/helpers/vmmodel.php, то в нем есть определение функции store. Если в ней ставлю exit() или die(), то ничего не происходит.
Вопрос, если происходит инициализация объекта класса VmModel:
Код
$model = VmModel::getModel($this->_cname);
, то изменения в одном из его методов(добавил в функцию store код:
Код
var_dump($data);
die();
)
должны изменять ход выполнения строки
Код
$id = $model->store($data);
а именно останов выполнения функции?
« Последнее редактирование: 05.06.2013, 17:26:51 от borro »
*

SDKiller

  • Dev Team
  • 2734
  • 320
  • ...ergo sum
Вам надо искать конкретную модель, которая инициализируется в данном контексте, а не абстрактную vmmodel
Так что надо выяснить что у вас в $this->_cname для начала - и смотреть фукнцию store этой модели.
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Ну гляньте hidden инпуты в конце формы - там будут или controller или view
Здравствуйте.
Волею судеб снова надо разобраться с тем, что происходит после нажатия этой кнопки Сохранить.
Если бы я тогда ответил Вам, что там в скрытом инпуте стоит
<input type="hidden" name="view" value="product">
Какой файл Вы бы посоветовали искать тогда далее чтобы вести отладку?  ^-^ Вообще дело, как вы может быть поняли, происходит в админке VirtueMart при редактировании карточки товара
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Improved AJAX Login & Register + социальные кнопки

Автор atkaa1

Ответов: 6
Просмотров: 1360
Последний ответ 15.03.2016, 01:05:58
от AlekVolsk
jQuarks - нет кнопки "Показывать результаты сразу" в админке

Автор Cristallizacia

Ответов: 0
Просмотров: 388
Последний ответ 05.06.2014, 14:20:49
от Cristallizacia
[Решено] Сохранить файл на удаленном ПК и прочитать 

Автор AlekVolsk

Ответов: 18
Просмотров: 575
Последний ответ 03.04.2014, 13:55:16
от AlekVolsk
Не загружается файл

Автор x_files_1

Ответов: 0
Просмотров: 324
Последний ответ 24.02.2014, 13:02:36
от x_files_1
Как форму HTML с обработчиком на php превравить в модуль Joomla 3.1.5?

Автор sevzem

Ответов: 4
Просмотров: 630
Последний ответ 14.02.2014, 18:25:10
от sevzem