Herzlich danke für eure Hinweise,
ich schau mir das ganze noch mal in Ruhe an, manchmal sieht man ja den Wald vor lauter Bäumen nicht.
Mirko
Herzlich danke für eure Hinweise,
ich schau mir das ganze noch mal in Ruhe an, manchmal sieht man ja den Wald vor lauter Bäumen nicht.
Mirko
Ok, eigentlich hab ich das soweit ich es verstanden hab eingerichtet.
In der services/provider.php steht jetzt fogendes:
use Joomla\CMS\Extension\Service\Provider\Module as ModuleServiceProvider;
use Joomla\CMS\Extension\Service\Provider\ModuleDispatcherFactory as ModuleDispatcherFactoryServiceProvider;
use Joomla\CMS\Extension\Service\Provider\HelperFactory as HelperFactoryServiceProvider;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
return new class () implements ServiceProviderInterface {
public function register(Container $container): void
{
$container->registerServiceProvider(new ModuleDispatcherFactoryServiceProvider('\\Joomla\\Module\\BasicForms'));
$container->registerServiceProvider(new HelperFactoryServiceProvider('\\Joomla\\Module\\BasicForms\\Site\\Helper'));
$container->registerServiceProvider(new ModuleServiceProvider());
}
};
Alles anzeigen
In src/Dispatcher/Dispatcher.php steht das:
namespace Joomla\Module\BasicForms\Site\Dispatcher;
\defined('_JEXEC') or die;
use Joomla\CMS\Dispatcher\DispatcherInterface;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Helper\ModuleHelper;
use Joomla\Module\BasicForms\Site\Helper\BasicFormsHelper;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Application\CMSApplicationInterface;
use Joomla\Input\Input;
use Joomla\Registry\Registry;
use Joomla\CMS\Helper\HelperFactoryAwareInterface;
use Joomla\CMS\Helper\HelperFactoryAwareTrait;
class Dispatcher implements DispatcherInterface, HelperFactoryAwareInterface {
use HelperFactoryAwareTrait;
protected $module;
protected $app;
public function __construct(\stdClass $module, CMSApplicationInterface $app, Input $input) {
$this->module = $module;
$this->app = $app;
}
public function dispatch() {
...
Alles anzeigen
Das Ajax-Script wird wie folgt aufgerufen:
$(\'#form_'.$form_id.'\').submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: \'?option=com_ajax&module=basic_forms&method=get&format=json\',
type: \'POST\',
data: formData,
processData: false,
contentType: false,
success: function(response) {
...
},
error: function(jqXHR, textStatus, errorThrown) {
...
}
});
});
Alles anzeigen
Und die Funktion in der src/Helper/BasicFormsHelper.php ist wie folgt benannt (Funktionsinhalt ist nur ein Beispiel):
public static function getAjax() {
$response = array(
'state' => 0,
'message' => 'MEINE MITTEILUNG',
);
return new JsonResponse($response);
Factory::getApplication()->close();
}
Alles anzeigen
Ich kann erstmal nichts erkennen was fehlt. Oder habe ich was übersehen?
Mirko
Hallo,
ich bin gerade dabei ein selbst erstelltes Modul, welches ein einfaches Kontaktformular via Ajax versendet, auf die neue Modul-Struktur mit Provider umzustellen.
Bei der Anpassung habe ich mich an das Tutorial auf https://manual.joomla.org/docs gehalten.
Die alte Struktur sah wie folgt aus:
- language/
- media/
- src/
- tmpl/
- helper.php (da liegt die Ajax Funktion)
- mod_eigenesmodul.php
- mod_eigenesmodul.xml
Die neue Struktur sieht jetzt so aus:
- language/
- media/
- services/
- src/
- src/Dispatcher/...
- src/Helper/ModEigenesmodulHelper.php (hier liegt die Ajax Funktion derzeit)
- src/forms/
- tmpl/
- mod_eigenesmodul.xml
Bei versenden bekomme ich dann folgenden Fehler:
{
"error": true,
"code": 0,
"message": "Class \"Joomla\\Module\\BasicForms\\Site\\Helper\\ModuleHelper\" not found"
}
Was hab ich falsch gemacht? Muss die Helper Klasse bzw. die Ajax Funktion wo anders eingebunden sein? Über eine Anregung oder Idee währe ich dankbar.
Mirko
Ja, die Anleitung kannte ich auch schon. Habs aber noch mal mit diesem Code probiert, leider erfolglos.
Spielt es eine Rolle wo und wie das Script eingebunden ist? Wenn ich die Anleitung richtig verstehe müsste das Script im Media Ordner von Joomla gespeichert sein – allerdings nutze ich ein Modul und keine Komponente wie im Beispiel. Oder ist es egal?
Mirko
Hallo,
ich habe ein kleiner Modul für das Frontend geschrieben, welches ein Formular generiert. Jetzt benötige ich für die Validierung (client side) einen eigenen Validation Handler. Nur leider scheint er den Code gar nicht aufzugreifen. – die Validierung an sich funktioniert aber, und die CSS Klasse ist bei dem entsprechende Feld eingefügt.
$(document).ready(function() {
document.formvalidator.setHandler('testing', (value, element) => {
alert('TEST');
return true;
});
});
Hat jemand eine Idee was ich falsch mache?
Mirko
Hab es hinbekommen.
Hallo,
ich habe ein kleines Formular Modul welches eine XML mit Formularfelder erstellt und diese dann via "renderFieldset()" ausgibt. Die Ausgabe erfolgt dann als Joomla Standard als "control-group". Gibt es eine Möglichkeit der XML eine CSS Klasse mitzugeben, so dass ich für jede "control-group" eine Individuelle CSS Klasse vergeben kann?
Mirko
Ich würde das Thema erst mal abschließen.
Danke für die Infos.
Das klingt mal nach guten Aussagen und ist für mich irgendwie auch schlüssig.
Herzlichen Dank an alle.
Es geht um Personenbezogene Daten aus Formularen, welche nur für bestimmte Benutzer/Personen zugänglich sein dürfen – über die Frage des Sinns hab ich auch schon mit den Verantwortlichen diskutiert, eher erfolglos.
Aus diesem Grund würde ich das gern so umsetzen.
Hallo,
gibt es eine Möglichkeiten bestimmte Daten beim schreiben in die Datenbank zu verschlüsseln, so dass diese trotzdem für jeden berechtigten Benutzer im Backend normal angezeigt werden?
Mirko
Hallo Elwood,
danke für den Hinweis, da hab ich wohl gerade an der Seite gearbeitet.
... den Link hatte ich auch schon mal.
Funktioniert an sich, ist aber in diesem Fall eher eine Notlösung, da dann die "Schwachstelle" bei dem liegt, welcher die Daten abfragt und ggf. bei einem falschen Limit nicht alle Datensätze angezeigt werden.
Danke trotzdem.
Ich würde gern diesen Beitrag noch mal reaktivieren und habe ein paar Fragen zur API bei Komponenten.
Die API konnte ich jetzt einrichten.
Jetzt haben sich aber ein paar Fragen dazu aufgetan:
1. Wie kann ich die abgefragten Daten vor der Ausgabe manipulieren/filtern?
2. Derzeit werden via GET angezeigte Daten auf das List Limit begrenzt (z.B. 20), kann man das irgendwie verhindern?
Über ein paar Anregungen oder noch weiterführende Links, würde ich mich freuen.
Mirko
Den Link hatte ich auch schon entdeckt, dachte ich hätte vor ein paar Monaten mal irgendwo was gelesen mit Json Daten über URL abrufen, also so was wie „json/compoment/view“.
Hallo,
leider bin ich im Web nicht wirklich fündig geworden, daher stelle ich meine Fragen mal hier im Forum ein.
Ich habe eine eigene kleine Komponente realisiert und möchte jetzt gern die Daten für einen externen Anbieter öffentlich zur Verfügung stellen, z.B. über eine API als JSON.
Dazu ein paar Fragen:
- Muss ich in meiner Komponente die API einrichten oder funktioniert das automatisch?
- Gibt es eine Möglichkeit die Daten über einen API Key nur auslesebar zu machen (get)? – oder auch ohne Authentifizierung?
- Kennt jemand eine gute Anleitung für die API von Joomla 4/5?
Mirko
Du könntest in der Index.php des Template die Menü Id abfragen und das Tag dann nur für die Id der Startseite ausgeben.