Новости Joomla

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

popoff17

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Здравствуйте!
В компоненте отправляю данные из формы. отправляю ajax'ом, т.е. получается, мне нужно вызвать отдельный файл, который будет работать с бд
я еще плохо знаком с "внутренностями" Joomla, потому пользуюсь примерами. Сделал так:
Код
<?
//код из index.php
define('_JEXEC', 1);
require_once 'includes/defines.php';
require_once 'includes/framework.php';
//код из примера в инете
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('user_id', 'profile_type', 'profile_value', 'ordering'));
$query->from('#__user_profiles');
$query->where('profile_type LIKE \'custom.%\'');
$query->order('ordering ASC');
$db->setQuery($query);
$results = $db->loadObjectList();
?>

но при вызове этого файла (site.ru/test.php) я вижу лишь сообщение:
No configuration file found and no installation code available. Exiting...

т.е. вопрос по сути: какие файлы нужно подключить к отдельному файлу, чтобы работать из него с БД и/или отправкой почты?
и как указать пути к этим файлам, если мой файл (test.php) будет лежать в папке компонента?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Что-то Вы усложняете - вам не нужен отдельный файл! Если Вы пишите свой компонент, то просто добавьте этот код в метод модели (без всяких там require_once), а вызов этого метода в контроллер.

ajax-запрос -> controller -> модель -> controller
*

popoff17

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Что-то Вы усложняете - вам не нужен отдельный файл! Если Вы пишите свой компонент, то просто добавьте этот код в метод модели (без всяких там require_once), а вызов этого метода в контроллер.

ajax-запрос -> controller -> модель -> controller

спасибо за ответ. я просто еще не разобрался как работает модель и контроллер (тут можно надо мной посмеяться :) ) и сделал просто вьювер с одной только страницей. думал аяксом вызвать файл будет проще в моем случае...
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Ну а как Вы компонент делаете? Что-то не пойму... У Вас в компоненте только представление с формой и все?
*

popoff17

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Ну а как Вы компонент делаете? Что-то не пойму... У Вас в компоненте только представление с формой и все?

да. я не понял сразу как используется модель и как контроллер переключает задачи, когда есть таск ($_GET['task']="mail"), потому из примера убрал модель оставив только точку входа, контроллер и представление, в котором содержится форма. думал в форме submit заменить на button и вызывать функцию, которая будет отправлять форму аяксом...

Давайте я вопрос изменю тогда, если вы не против мне подсказать как правильно было бы сделать?

взять за пример Вашу статью: http://joomlablog.ru/dokumentatsiya/dlya-razrabotchika/sozdanie-komponenta-dlya-joomla-2-5/225-chast-2-dobavlenie-mvc-i-logirovaniya

т.е. есть контроллер, он пустой, по умолчанию  (если нет таска, как я понял) выполняет просто отображение представления.. и т.д.
я же правильно понял - если появляется таск, то контроллер должен вызвать другое представление, соответственно другую модель и т.д.?
как тогда обработать таск? и как должен быть написан action в форме? так, например: action="?task=mail" ?

мой компонент если отличается от вашего примера - то наверное парой-тройкой строк. я тут его выложил: http://yadi.sk/d/wzpJ7KddJaeXR

или я вообще все поперепутал?((
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Да не, все правильно. Например, в форме Вы делаете:

Код: javascript
jQuery.ajax({
    type: 'POST',
    url: 'index.php?option=com_helloworld&task=profiles.getList&format=raw&' . JUtility::getToken(). '=1'
    data: {// тут данные},
    success: function(data){
               // тут что-то там делаем если все ок
    }
});

Обратите внимание на task=profiles.getList - вот так и передается вызов контроллера и его задача. То есть в нашем случае получается контроллер profiles и задача getList. Тогда в контроллере profiles создаете метод getList() в котром подключаете модель и забираете из неё данные:

Код: php
public function getList()
{
JSession::checkToken('request') or jexit('Invalid Token');

$model = $this->getModel();
$result = $model->getProfilesList();

        // дальше что-то делаем с результатом
}
*

popoff17

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Например, .............
вот более-менее теперь понял что к чему, буду пробовать. Спасибо большое!!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как в JS работать с параметрами XML-файла?

Автор Vasisdas

Ответов: 8
Просмотров: 647
Последний ответ 13.09.2019, 10:32:10
от beliyadm
СЕСИЯ при AJAX запросе к php файлу

Автор avantyrist

Ответов: 15
Просмотров: 2649
Последний ответ 20.12.2015, 14:13:43
от robert
Отправка файла на email

Автор Charlottas

Ответов: 5
Просмотров: 1105
Последний ответ 30.11.2014, 13:14:41
от Charlottas
Модуль обратной связи AJAX

Автор AlekVolsk

Ответов: 61
Просмотров: 4455
Последний ответ 07.09.2014, 13:22:35
от AlekVolsk
[Решено] Русский язык в AJAX.php

Автор Hishchnik

Ответов: 15
Просмотров: 1887
Последний ответ 10.06.2014, 19:03:34
от Hishchnik