Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

Riddik

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Отправка почты
« : 16.12.2013, 21:02:22 »
Привет.

Хочу через модуль "Custom HTML" сварганить форму отправки письма

Вот такая простая форма

Код
<h3>Форма отправки письма</h3>
<form method="post" action="sendmail.php">
<p><input type="text" size="40" placeholder="Ваше имя" name="user"></p>
<p><input type="text" size="40" placeholder="E-mail" name="email"></p>
<p><input type="text" size="40" placeholder="Тема письма" name="subj"></p>
<p>Текст обращения<Br>
<textarea placeholder="Текст обращения" name="text" cols="40" rows="6"></textarea></p>
<p><input type="submit" value="Отправить"></p>
</form>

Вот php код для отправки:

Код
<?php	
$name = strip_tags(stripslashes($_POST['user'] ));
$mail = strip_tags(stripslashes($_POST['email']));
$subj = strip_tags(stripslashes($_POST['subj']));
$body = strip_tags(stripslashes($_POST['text']));

$headers = "From: $name $mail\n";
$headers .= "Content-Type: text/html; charset=utf-8\n";

if($name != "" && $mail != "" && $subj != "" && $body != "")
{
mail("mymail@yandex.ru", $subj, $body, $headers);
}
?>

Скажите, пожалуйста, куда закинуть этот php файл, чтобы работало?

Сейчас при нажатии на кнопку "отправить", пишет "404 - Article not found", и пытается открыть страницу /index.php/sendmail.php
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Отправка почты
« Ответ #1 : 16.12.2013, 21:12:57 »
1. Отправка почты средствами Joomla Framework
2. Уроки по созданию компонентов для Joomla - цикл уроков в котором я наглядно показываю как создать форму обратной связи
*

Riddik

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: Отправка почты
« Ответ #2 : 16.12.2013, 22:09:00 »
Спасибо!
*

Riddik

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: Отправка почты
« Ответ #3 : 17.12.2013, 03:30:36 »
При попытке редактирования созданного по уроку компонента в админке появляется сообщение  500 JHtml searchtools not found.
*

Riddik

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: Отправка почты
« Ответ #4 : 17.12.2013, 17:54:24 »
Как это исправить, ничего не могу понять, подскажите, пожалуйста!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Отправка почты
« Ответ #5 : 17.12.2013, 18:11:48 »
При попытке редактирования созданного по уроку компонента в админке появляется сообщение  500 JHtml searchtools not found.
Эм ну вы хоть расскажите где именно редактируете и что!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Отправка почты
« Ответ #6 : 17.12.2013, 18:17:26 »
При попытке редактирования созданного по уроку компонента в админке появляется сообщение  500 JHtml searchtools not found.
А я наверно понял, генератор каркаса компонента который сейчас на сайте работает для версии 3.2 если у вас ниже то будет эта ошибка (
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Отправка почты
« Ответ #7 : 17.12.2013, 18:27:51 »
Цитировать
Сейчас при нажатии на кнопку "отправить", пишет "404 - Article not found", и пытается открыть страницу /index.php/sendmail.php
Так и положи в корень сайта файл sendmail.php
*

Riddik

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: Отправка почты
« Ответ #9 : 17.12.2013, 18:57:34 »
Данную форму можно и через com_contact отправлять
Отправка писем из формы в материале

Нужно взять модуль com_contact и поправить его код в соответствии с моей формой - и всё?


Казалось бы такая простая  вещь, а сколько уже мучений.

А я наверно понял, генератор каркаса компонента который сейчас на сайте работает для версии 3.2 если у вас ниже то будет эта ошибка (
Да, Joomla версии 3.0

Так и положи в корень сайта файл sendmail.php

Давно положил, а ошибок миллион. в Chrome работает, в остальных браузерах нет. Да и в Chrome то работает, то нет. Простая отправка формы на мыло!

Вот же всё логично -

Вот код а custom HTML:
Код
<script>
function sendForm(form, success)
{
    var request = new XMLHttpRequest();
    request.open(form.method, form.action);
    request.onreadystatechange = function() {
        if (request.readyState == request.DONE) {
            if (request.status == 200) {
                success(request.responseText);
            }
        }
    };
    request.send(new FormData(form));
}
</script>
<h3>Форма отправки обращения</h3>
<form onsubmit="return sendForm(this, alert), false" action="../sendmail.php" method="post">
<p><input type="text" size="40" placeholder="Ваше имя" name="user"></p>
<p><input type="text" size="40" placeholder="E-mail" name="email"></p>
<p><input type="text" size="40" placeholder="Тема письма" name="subj"></p>
<p>Текст обращения<Br>
<textarea placeholder="Текст обращения" name="text" cols="40" rows="6"></textarea></p>
<p><input type="submit" value="Отправить" name="submit_form1"></p>
</form>

А вот код скрипта sendmail.php:
Код
<?php	
//header('Content-Type: text/html; charset=utf-8');
if(isset($_POST['submit_form1']))
{
$name = $_POST['user'];
$mail = $_POST['email'];
$subj = $_POST['subj'];
$body = "Имя отправителя: ".$name."\nE-mail отправителя: ".$mail."\n\nТекст письма:\n\n".$_POST['text'];
if($name =! "" && $mail != "" && $subj != "" && $_POST['text'] != "")
{
if(mail("mail@mail.ru", $subj, $body, "Content-Type: text/plain; charset=utf-8\n"))
echo 'Ваше обращение успешно отправлено!'; //lrm@uez.ru
else echo 'Обращение не отправлено, попробуйте позже!';
}
else echo 'Вы не заполнили все поля! Попробуйте ещё раз.';
}
?>
Работает только в Chrome, и то раз на раз не приходится, выдаёт такое сообщение:

Warning: mail()[function.mail]: Could not execute mail delivery program '/usr/sbin/sendmail -t -i' in /home/uez-host/uez.ru/docs/sendmail.php on line 11

К слову в 11 строке и есть попытка отправить мыло: mail(....)

Потом если обновить страницу с формой и снова отправить - всё хорошо работает. Это только в Chrome, в остальных вообще даже до скрипта дело не доходит - видать грабли с формированием запроса.

Ну как тут голову не сломать? Я уже всё перепробовал...
« Последнее редактирование: 17.12.2013, 19:01:21 от Riddik »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отправка дополнительных на робокассу

Автор jservice

Ответов: 25
Просмотров: 3376
Последний ответ 28.12.2014, 02:12:19
от fsv
Отправка файла на email

Автор Charlottas

Ответов: 5
Просмотров: 1289
Последний ответ 30.11.2014, 13:14:41
от Charlottas
Отправка данных из разных форм на одной странице

Автор ShutTap

Ответов: 8
Просмотров: 2134
Последний ответ 26.08.2014, 13:48:17
от zomby6888
Отправка запроса POST и получение ответа? Joomla 3.1.5

Автор infoehra

Ответов: 8
Просмотров: 2335
Последний ответ 11.11.2013, 10:33:03
от infoehra
Отправка формы методом GET на URL с параметрами

Автор Виталик

Ответов: 0
Просмотров: 2072
Последний ответ 09.07.2012, 01:28:21
от Виталик