Новости Joomla

Joomla официально признана цифровым общественным благом Joomla с гордостью сообщает, что была...

Joomla официально признана цифровым общественным благом 🙏🎉Joomla с гордостью сообщает, что была официально признана цифровым общественным благом (Digital Public Good, DPG) Альянсом цифровых общественных благ (Digital Public Goods Alliance, DPGA) — инициативой, поддерживаемой Организацией Объединённых Наций.Это признание ставит Joomla! в ряд международных open-source проектов, которые разделяют ценности открытости, прозрачности, защиты данных и социального воздействия. Важно отметить, что статус цифрового общественного блага присвоен самому программному решению Joomla!, а не организации Joomla как юридическому лицу.Альянс цифровых общественных благ (DPGA) ведёт международный реестр цифровых общественных благ и оценивает проекты на основе чётко определённых стандартов. Его миссия — поддержка открытых технологий, способствующих достижению Целей устойчивого развития ООН (UN SDGs) и решению глобальных задач развития. 🌐Чтобы получить статус цифрового общественного блага, проект должен соответствовать Стандарту цифровых общественных благ (Digital Public Goods Standard), который включает следующие критерии:✔️ Открытое лицензирование (например, использование признанных open-source лицензий)✔️ Защита данных и безопасность✔️ Соответствие правовым и этическим нормам✔️ Вклад в достижение Целей устойчивого развития ООН✔️ Прозрачное управление и долгосрочная устойчивость✔️ Активное вовлечение сообществаПолучение статуса цифрового общественного блага — процесс далеко не автоматический. Joomla прошла тщательную процедуру оценки, которая потребовала предоставления подробной документации и доказательств соответствия строгим стандартам.Благодаря самоотверженной работе множества участников сообщества, этот результат стал наглядным подтверждением универсальности и открытости Joomla, а также бесчисленных способов, с помощью которых она помогает людям создавать веб-решения.Это достижение подчёркивает позицию Joomla как одной из самых надёжных и гибких open-source CMS в мире — системы, которая продолжает давать возможность разработчикам, организациям и государственным структурам создавать открытые, безопасные и инклюзивные цифровые решения.Оригинал новости

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

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Так Вы же передаете данные из контроллера, не пойму, в чем вопрос...
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
вопрос получить массив из бд (стороння бд со своим логином и паролем), т.е. когда я получу массив из бд в модель и мне его нужно передать в вид.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Блин, ну Вы вопросы то сразу формулируйте полностью...
Подключение к сторонноей базе данных

В представлении Вы же сами писали как получать $item = $this->get('Item');

*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Извините что ввожу Вас в заблуждение. Был уверен что нужно подключаться родными средствами php. Вобщем то уже и подключался поэтому не стал спрашивать. Сейчас я пытаюсь сделать пример: вводим что-либо на форме в поле и это же самое нужно вывести в этой же форме (например просто текст) после нажатия кнопки. Введенная строка должна пройти через контроллер, где мы ее получаем, Затем пройти "как бы" обработку в модели (просто допишу что-нибудь в строку), затем отправиться в вид и отобразиться на форме. Когда я пойму каким образом провести эту строку через все скрипты, то думаю не составит труда в модели (послания запроса и получения данных) написать своих функций для обработки данных.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
И верно сделали, что начали с простого. Потом будете наращивать. Будут вопросы, спрашивайте. Или уже есть? =)
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Вопрос все тот же вобщем-то)) С Вашей помощью получилось отправить строку из формы в контроллер, далее сделал как Вы предлагали: в контроллере получаем модель и вызываем функцию этой модели (например будет называться search). но данные в вид отправляются другой функцией (например getItem).
Проблема: функция (getItem) - вызывается из вида, должна отправлять то что получает ф-ция(search) - вызывается из контроллера. Я думаю можно сделать глобальную переменную в модели, в которую запишется "строка"  в ф-ции search, и getItem будет брать значение тоже из этой переменной. Но правильно ли это...
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Если у Вас представление получает данные с помощью getItem, значит модель должна возвращать данные из той же функции. Для этого просто в функции search установите свойство модели $item в полученное значение. Забудьте про глобальные переменные и изучайте ООП.

Код: php
public function search($data)
{
    $this->item = $data;
}

public function getItem()
{
    return $this->item;
}
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Вы имеете ввиду перед функциями дописать  protected $item;  ?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
что-то все никак.. Помоему с редиректом я что-то напутал.. функция search вызывается (если в ней вызвать несуществующую ф-цию то будет ошибка) Поправка: данные передаются в функцию и присваиваются переменной $i, но в getItem переменная $i имеет значение NULL. И еще заметил что из формы не передаются русские буквы (может дело в var_dump? он выводит пустую строку)
Код
class TestController extends JControllerLegacy
{
public function search ()
{
$data = JFactory::getApplication()->input->get('test_input');

$model = $this->getModel();
$model->search($data);

$uri = JFactory::getURI();
$this->setRedirect(JRoute::_($uri));
}
}
Модель теперь такая
Код
class TestModelTest extends JModelItem
{
private $i;

public function search($data)
{
$this->i = $data;
}

public function getItem()
{
return $this->i;
}

}
« Последнее редактирование: 03.04.2014, 12:47:49 от shenya »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Так у Вас же представление в контроллере вообще не вызывается.

Замените

Код: php
$uri = JFactory::getURI();
$this->setRedirect(JRoute::_($uri));
на
Код: php
parent::display();
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Код: php
parent::display();
Без изменений((
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
var_dump($_POST);     выводит русские буквы, а $data = JFactory::getApplication()->input->get('test_input'); не хочет...  только почему-то строка в POST имеет вид string(12) "рррррр", т.е. длина строки почему-то в 2 раза больше чем есть на самом деле
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Без изменений((
Покажите код класса представления. Не знаю, что не так с русскими буквами, но для проверки пока используйте латиницу. Потом будете с этим разбираться.
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
view.html.php
Код
class TestViewTest extends JViewLegacy
{
protected $item;

public function display($tpl = null)
{
// Получаем сообщение из модели.
$this->item = $this->get('Item');

// Отображаем представление.
parent::display($tpl);
}
}

Сам по себе вид получает данные если в getItem просто какую нибудь строку вернуть
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Хмм... Похоже, что представление вызывает другой объект модели, в котором не установлено свойство $i, а значит getItem() ничего не вернет. Надо подумать =)
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
может быть такое что значение в $i. не остается? или можно вызвать parent:: display в функции  search?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
var_dump($_POST);     выводит русские буквы, а $data = JFactory::getApplication()->input->get('test_input'); не хочет...  только почему-то строка в POST имеет вид string(12) "рррррр", т.е. длина строки почему-то в 2 раза больше чем есть на самом деле
а с чего оно будет выводить, если там по умолчанию стоит фильтр "CMD"?
Код
			case 'CMD':
$result = (string) preg_replace('/[^A-Z0-9_\.-]/i', '', $source);
$result = ltrim($result, '.');
break;
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Текс, я разобрался.

parent::display(); в контроллере автоматом создает другую модель, которая передается в представление. Поэтому в нашем случае parent::display(); использовать нельзя. Вместо этого:

Код: php
// Полуаем представление Test с типом HTML
$view = $this->getView('test', 'html');

// Устанавливаем модель в представление и делаем её дефолтной
$view->setModel($model, true);

// Отображаем
$view->display();
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Спасибо огроменное))) наконец-то работает! Проблему с передачей русских букв решил сделать так (т.к. несколько параметров для поиска)
Код
$args = array('test_input'   => FILTER_SANITIZE_STRING,
    'test_input2'   => FILTER_SANITIZE_STRING);
$data = filter_input_array(INPUT_POST, $args);
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Еще раз Здравствуйте! Изучал ваше руковдство урок7. Появился вопрос. Страничку админской формы я решил сделать как форму с полями и кнопкой Joomla "Сохранить". в базу данных по кнопке сохранить постоянно добавляются новые записи. В каком методе определяется что данные нужно редактировать а не создавать? В метод loadFormData я добавил следующее (как я понял мы по этому методу определяем старая это запись или новая. И как мне получить данные запроса из $query в пределах этого метода чтобы вернуть его значение)
Код
    protected function loadFormData()
    {
    //как не должно быть
$data['hostname'] = "localhost";
$data['port'] = "3306";
$data['dbname'] = "dbname";
$data['login'] = "login";
$data['password'] = "password";

 
        
       //как должно быть
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
 
        $query->select('hostname, port, dbname, login, password');
 

        $query->from('#__ecatalog');

       //в data записать результат запроса
       $data = $query;
 
       return $data;
    }

Мне нужно чтобы запись в таблице бд была одна, и редактировать ее в админской форме
« Последнее редактирование: 08.04.2014, 09:16:36 от shenya »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Цитировать
В каком методе определяется что данные нужно редактировать а не создавать?
Это определяется не в методе, а в форме - она должно содержать скрытое поле id:
Код: xml
<field name="id" type="hidden" />
Для новой записи значение не указывается, а для существующей - это id записи из базы. На основании этого класс таблицы оперделяет, добавлять или обновлять данные в базе.

Я добавил этот момент в часть 7, а то действительно не было очевидно.

Цитировать
И как мне получить данные запроса из $query в пределах этого метода чтобы вернуть его значение)
Код: php
$db->setQuery($query);
$results = $db->loadObjectList();

http://docs.joomla.org/Selecting_data_using_JDatabase
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Спасибо за ответ! запрос на получение данных выполнился. Но по прежнему вместо обновления данных выполняется запрос на добавление
В поле id добавил
<field name="id"  type="hidden"  default="1"/>
Правда теперь с ошибкой, т.к. дублируется значение первичного ключа..
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
да, если я правильно понял. Ну INSERT ведь правильно формируется, только он UPDATE должен быть (форма у меня одна, поэтому я хотел сделать получение значение не из первой формы как в примере, а из бд или просто прописать где нибудь, например <field name="id"  type="hidden"  default="1"/>)
код  admin/tables/ecatalog.php
Код
<?php
defined('_JEXEC') or die;
jimport('joomla.database.table');

class eCatalogTableeCatalog extends JTable
{
public function __construct(&$db)
{
parent::__construct('#__ecatalog', 'name', $db);
}
}

models/ecatalog.php
Код
<?php
defined('_JEXEC') or die;
jimport('joomla.application.component.modeladmin');

class eCatalogModeleCatalog extends JModelAdmin
{
public function getTable($type = 'eCatalog', $prefix = 'eCatalogTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}

    public function getForm($data = array(), $loadData = true)
    {
        $form = $this->loadForm(
$this->option . '.ecatalog', 'ecatalog', array('control' => 'jform', 'load_data' => $loadData)
);
        if (empty($form))
        { return false; }
 
        return $form;
    }

private function datab()
{
$db = JFactory::getDBO();
                $query = $db->getQuery(true);
 
                $query->select('hostname, port, dbname, login, password');
 
                $query->from('#__ecatalog');
 
$db->setQuery($query);
$result = $db->loadAssoc();

        return $result;
}

    protected function loadFormData()
    {
$data = $this->datab();
//$data['id'] = "1";
        return $data;
    }
}

Сама ошибка: Сохранить не удалось из-за ошибки: eCatalogTableeCatalog: :store failed
Duplicate entry '1' for key 'PRIMARY' SQL=INSERT INTO `jos_ecatalog` (`id`,`hostname`,`port`,`dbname`,`login`,`password`) VALUES ('1','hostt','3306','dbname','login','password')
Она появляется если в $form (метод getForm) есть поле id со значением "1".

Начал копать и обнаружил: когда выгрузил переменную из Вашего примера $data из loadFormData() получил
object(JObject)#141 (3) { ["_errors:protected"]=> array(0) { } ["id"]=> string(1) "1" ["greeting"]=> string(12) "Hello World!" }

В моем примере это просто массив из базы данных, а не объект
array(6) { ["id"]=> string(1) "1" ["hostname"]=> string(4) "host" ["port"]=> string(4) "3306" ["dbname"]=> string(6) "dbname" ["login"]=> string(5) "login" ["password"]=> string(8) "password" }

Вопрос (само собой) как получить объект?

Причем метод loadObject получает из бд stdClass, а не object(JObject)
« Последнее редактирование: 10.04.2014, 08:52:33 от shenya »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Цитировать
parent::__construct('#__ecatalog', 'name', $db);
Почему 'name' ? Здесь должно быть поле первичного ключа, а у Вас это 'id' !

Цитировать
$result = $db->loadAssoc();
Это получание массива. Для объекта - $db->loadObjectList();
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Цитировать
Почему 'name' ?
не знаю, откуда взялось, делал по примеру
Цитировать
Для объекта - $db->loadObjectList();
так поля пустые. метод loadObject() получает из бд object(stdClass), а не object(JObject). и все равно выполняется запрос на добавление(с ошибкой)
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Цитировать
class eCatalogTableeCatalog extends JTable
Почему Tablee? Должно быть Table

Цитировать
так поля пустые. метод loadObject() получает из бд object(stdClass), а не object(JObject)
Да сорри, Вы же одну запись выбираете. Тогда loadObject(). А JObject он или нет, это в принципе не важно.
*

shenya

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Цитировать
Почему Tablee? Должно быть Table
название компонента eCatalog.
Даже если так.  если прописать <field name="id"  type="hidden"  default="1"/>, то $data из loadFormData() выглядит так:
Код
object(stdClass)#41 (5) { ["hostname"]=> string(4) "host" ["port"]=> string(4) "3306" ["dbname"]=> string(6) "dbname" ["login"]=> string(5) "login" ["password"]=> string(8) "password" }
Если брать id из бд то так
Код
object(stdClass)#44 (6) { ["id"]=> string(1) "1" ["hostname"]=> string(4) "host" ["port"]=> string(4) "3306" ["dbname"]=> string(6) "dbname" ["login"]=> string(5) "login" ["password"]=> string(8) "password" }
В обоих случаях запрос на добавление с ошибкой

Поправка. запрос на добавление срабатывает в обоих случаях
« Последнее редактирование: 10.04.2014, 16:13:36 от shenya »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Jroute компонента альбомов

Автор Koot

Ответов: 2
Просмотров: 973
Последний ответ 03.08.2019, 10:21:04
от Aleks.Denezh
Как использовать функции компонента в модуле?

Автор specialist-web

Ответов: 6
Просмотров: 1288
Последний ответ 12.05.2019, 12:26:10
от AlekVolsk
params->get для компонента, как получить свои собственные параметры для компонента

Автор klubnichkaaa

Ответов: 13
Просмотров: 14332
Последний ответ 01.06.2017, 20:20:28
от Septdir
Форма обратной связи не отправляет почту (ajax_contact аддон SPPageBuilder)

Автор AHTEPO

Ответов: 3
Просмотров: 3188
Последний ответ 15.04.2017, 10:01:57
от Taatshi
Плагин Smart Search для своего компонента

Автор ftp27

Ответов: 1
Просмотров: 2092
Последний ответ 07.01.2017, 19:44:04
от newvideo