【发布时间】:2015-06-15 21:22:07
【问题描述】:
我正在尝试使用 javascript 和 php 做一个条件选择器。我之前已经做过了,但是在wordpress(纯php)中,现在我要适应prestashop(.tpl文件)。
在 .tpl 中编写 php 并不容易,并将 Smarty 更新为 SmartyBC 类。但我还是很复杂
/public_html/controllers/front/certificadosController.php
class certificadosControllerCore extends FrontController{
public $php_self = 'certificados';
public function init(){
parent::init();
}
public function initContent(){
parent::initContent();
$this->setTemplate(_PS_THEME_DIR_.'certificados.tpl');
}
}
function ConectarBD() {
// connect to db
}
function TraerProd() {
//get all products
}
function TraerAttr($vid_prod) {
//get atributtes
}
逻辑是这样的吗?我正在使用标签 {php} php code {/ php} {literal} js code {/ literal}
我向他们展示了我的一段代码,prestashop 显然没有很好地解释。
/public_html/themes/theme/certificados.tpl
{literal}
var_attr = '<option value="default" selected>Diametro</option>';
sel_attr = $('#attr');
$('select').change(function() {
switch(this.id) {
case 'producto':
sel_attr.find('option').remove();
sel_attr.append(var_attr);
sel_attr.show();
sel_attr.removeAttr('disabled');
if (this.value == 'Válvula_de_bloqueo_Pead' ) {
for (i = 0; i < Válvula_de_bloqueo_Pead.length; i++) {
$("#attr").append(
'<option value="' + Válvula_de_bloqueo_Pead[i] + '">' + Válvula_de_bloqueo_Pead[i] + '</option>'
);
}
{/literal}
{php}
$Prod=array();
$Prod=TraerProd();
if (!empty($Prod)) {
$cntProd=count($Prod);
};
for ($k = 0; $k < $cntProd; $k++) {
$_prod = $Prod[$k]['name']; $_prod = str_replace(array(' ', '-', '"', '/', '.', 'ñ'), array('_', '_', '', '_', '_', 'n'), $_prod);
$Attr=array();
$id_prod=$Prod[$k]['ID'];
$Attr=TraerAttr($id_prod);
if (!empty($Attr)) {
echo '} else if (this.value =='.$_prod.') { for (i = 0; i <'.$_prod.'.length; i++) { $("#attr").append(" <option value="\'+'.$_prod.'[i]+\'">\'+'.$_prod.'[i]+\'</option>");}';
}
} /* cierre if, for (php) */
{/php}
{literal}
} //cierre if (js)
break;
}
看到结果链向我展示了切口,我认为这是过度使用标签 {php} 和 {literal}
这是JSFiddle 让我知道我想要完成什么,我重复一遍,就像我在 wp 中所做的那样,但是 .tpl 文件让我很复杂:(
我希望你能帮助我,对不起我的英语不好。谢谢!
【问题讨论】:
-
一些提示;永远不要在类文件中编写函数。我相信这违反了 PSR 规则。编号。 2 - 不要在 .tpl 文件中编写 yoru 逻辑! .tpl 严格用于输出数据。计算代码文件(控制器)中的数据。编号。 3 - 不要在你的代码中写特殊字符!仅使用英文字符
-
你应该关闭最后一个
{literal}标签
标签: javascript php prestashop