使用我的模块前端控制器,我需要对其进行初始化以显示客户必须填写的表格 (formulaire.tpl)。然后控制器使用我的模型(Formulaire.php)中定义的方法处理从表单发布的数据,然后我想让它显示另一个视图(recapitulatif.tpl),显示发送数据的提醒,添加到购物车按钮例如或再次填写表格的可能性。由于我想以 MVC 方式实现它,我不想创建一个新的 php 页面来将我的客户重定向到,但我想在处理数据后以某种方式显示第二个模板。有没有办法用控制器来做到这一点?在下面,您可以找到我的代码,它不起作用,它显示我的第一个模板,在我的第二个模板下方..
class FormulaireModuleDefaultModuleFrontController extends ModuleFrontController
{
public $ssl = true;
private $done_traitement = false;
public function postProcess()
{
//On vérifie le bouton submit du formulaire
if(Tools::isSubmit('bouton'))
{
// On va commencer en premier par récupérer l'id customer avec la variable cookie
// et vérifier que la personnes est bien loggée
global $cookie;
if(!isset($cookie->id_customer))
{
$message='Aucun client loggé';
}
else
{
$errors=array();
$id_cart=$this->context->cart->id;
$customer=$cookie->id_customer;
//On récupère les valeurs du formulaire
$prix=Tools::getValue('resultat');
$titre='porte_test';
$desc='Largeur de passage de '.Tools::getValue('largeur_passage').' mm, hauteur de passage de '.Tools::getValue('hauteur_passage')
.' mm, hauteur de linteau de '.Tools::getValue('hauteur_linteau').' mm, ecoinçon gauche de '.Tools::getValue('ecoincon_gauche')
.' mm, ecoincon_droit de '.Tools::getValue('ecoincon_droit'). ' mm, motif en '.Tools::getValue('motif_porte').' et de couleur '
.Tools::getValue('couleur_porte');
//On va vérifier les champs obligatoires
//Les champs sont remplis, on va faire le traitement des données.
$idprod=Formulaire::creerProduct($titre,0,13,$prix,$desc, 'mod_100',$customer);
Formulaire::addProduitauPanier($idprod);
$this->done_traitement=true;
}
//On envoie le message si il existe:
if(isset($message))self::$smarty->assign('message',$message);
if(isset($errors))self::$smarty->assign('erreurs',$errors);
}
}
public function initContent()
{
parent::initContent();
if($this->done_traitement)
$this->display(__FILE__,'recapitulatif.tpl');
}
public function init(){
$this->display_column_left = false;
$this->display_column_right = false;
$this->page_name = 'Configurateur';
parent::init();
$this->setTemplate('formulaire.tpl');
}
}
在此先感谢您的帮助 !
编辑 :
好的对不起这个问题。发布问题后,我只花了 2 分钟就弄清楚了。我只需要改变:
$this->display(__FILE__,'recapitulatif.tpl');
经过 :
$this->setTemplate('recapitulatif.tpl');
现在它可以工作了。带来不便敬请谅解 !