Jump to content
Tychoblood01

Chargement du contenu d'un fichier .tpl via Ajax

Recommended Posts

Bonjour,

j'aimerais savoir si l'un d'entre vous avait déja effectué ceci : charger le contenu d'un tpl (uniquement son contenu, pas de header et de chargements CSS & JS) pour l'afficher dans une div en AJAX, sur la version 1.5+.

 

J'ai déja effectué ce système en version 1.4 mais cela ne semble plus passer désormais.

 

En l'occurence ce serait pour charger le fichier contact-form.tpl dans le pied de page.

Mon problème est que rien n'est retourné du contenu du .tpl, uniquement des données en via JsonEncode ou des tests d'affichage.

 

J'ai cru lire dans un autre topic qu'en activant le "mode" ajax, uniquement ce genre de données pouvait être retourné.

 

Merci par avance de votre aide

 

Code Js très simple

$.ajax({
					  type: "POST",
					  url: "contactez-nous?ajax=true",
					})
					  .done(function( msg ) {
						$('#'+nameEnCours).text(msg);
						$('#'+nameEnCours).fadeIn();
					  });

Controller overridé 


class ContactController extends ContactControllerCore
{

	public function setMedia()
	{
		// parent::setMedia();
		$this->addCSS(_THEME_CSS_DIR_.'contact-form.css');
		$this->addJS(_THEME_JS_DIR_.'contact-form.js');
	}

	

	/**
	 * Assign template vars related to page content
	 * @see FrontController::initContent()
	 */
	public function initContent()
	{
		 if($this->ajax) //special variable to check if the call is ajax
		{
			echo "ajax";
			$return = array(
				'hasError' => true,
				'messageTest' => 'Message de test'
			);
			die(Tools::jsonEncode($return));
		}
		else
		{
			parent::initContent();
		}
		
		$this->assignOrderList();
		
		$email = Tools::safeOutput(Tools::getValue('from',
		((isset($this->context->cookie) && isset($this->context->cookie->email) && Validate::isEmail($this->context->cookie->email)) ? $this->context->cookie->email : '')));
		$this->context->smarty->assign(array(
			'errors' => $this->errors,
			'email' => $email,
			'fileupload' => Configuration::get('PS_CUSTOMER_SERVICE_FILE_UPLOAD')
		));


		if (($id_customer_thread = (int)Tools::getValue('id_customer_thread')) && $token = Tools::getValue('token'))
		{
			$customerThread = Db::getInstance()->getRow('
				SELECT cm.* 
				FROM '._DB_PREFIX_.'customer_thread cm
				WHERE cm.id_customer_thread = '.(int)$id_customer_thread.' 
				AND cm.id_shop = '.(int)$this->context->shop->id.' 
				AND token = \''.pSQL($token).'\'
			');
			$this->context->smarty->assign('customerThread', $customerThread);
		}

		
		$this->context->smarty->assign(array(
			'contacts' => Contact::getContacts($this->context->language->id),
			'message' => html_entity_decode(Tools::getValue('message'))
		));

		
		$this->setTemplate(_PS_THEME_DIR_.'contact-form.tpl');

	}
} 

"Your controller will not display tpl because you will add 'ajax=true' for example and then your code will only deal with json output for example and not display the controller html part."

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More