J'ai ajouté un simple bouton dans l'un de mes fichiers phtml.
<input type='button' name='emq_zip_btn' class='emq_zip_btn' value='Go'>
J'ai ajouté un fichier js personnalisé ("emq.js") à partir d'un module personnalisé (Ved_Mymodule):
require([
"jquery",
"jquery/ui"
], function($v){
//<![CDATA[
$v = jQuery.noConflict();
$v(document).ready(function()
{
console.log('jquery loaded from emq.js');
$v(".emq_zip_btn").on('click',function(e)
{
console.log('clicked');
});
});
//]]>
});
Lorsque je clique sur le bouton ci-dessus, "cliqué" est imprimé dans la console, c'est-à-dire que jQuery fonctionne correctement.
Voici un fichier contrôleur d'un module personnalisé Ved_Mymodule:
Ved \ Mymodule \ Controller \ Index \ Index.php:
<?php
namespace Ved\Mymodule\Controller\Index;
use Ved\Mymodule\Model\NewsFactory;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
class Index extends Action
{
/**
* @var \Tutorial\SimpleNews\Model\NewsFactory
*/
protected $_modelNewsFactory;
/**
* @param Context $context
* @param NewsFactory $modelNewsFactory
*/
public function __construct(
Context $context,
NewsFactory $modelNewsFactory
) {
parent::__construct($context);
$this->_modelNewsFactory = $modelNewsFactory;
}
public function execute()
{
}
}
Ved / Mymodule / etc / frontend / routes.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/
App/etc/routes.xsd">
<router id="standard">
<route id="news" frontName="news">
<module name="Ved_Mymodule" />
</route>
</router>
Ma question est de savoir comment renvoyer des données de cette méthode de contrôleur, puis y accéder via jQuery, c'est-à-dire comment effectuer un simple appel ajax après avoir cliqué sur ce bouton.
Réponses:
ci-dessous est l'exemple comment faire cela, veuillez le modifier en fonction de vos besoins.
J'ai utilisé le modèle js pour cela.
L'exemple suivant créera une liste déroulante dans votre fichier phtml en utilisant la fonctionnalité ajax.
Dans votre JS
Dans le contrôleur
DANS votre fichier phtml
getAjaxUrl doit être fonction dans votre fichier de bloc, qui vous renvoie l'url
J'espère que ça t'as aidé.
la source