在Magento 1.x中拼接字符串时遭遇Unexpected Identifier错误求助
解决Magento 1.x中字符串拼接的「Unexpected Identifier」错误
嘿,我一眼就瞅出问题所在了——你把PHP和JavaScript的语法混在一起写了,这就是触发「Unexpected Identifier」错误的核心原因!咱来一步步拆解并修正:
问题1:错误混用PHP输出语法
你在JS代码里直接写了echo $product->getPrice(),这完全搞错了PHP和JS的执行逻辑:PHP是服务器端代码,会先运行并输出内容到页面,然后JS才会在客户端解析。正确的做法是把PHP变量的输出直接嵌入到JS字符串中,不需要额外加echo关键字在JS的拼接逻辑里。
问题2:Magento方法名错误
你写的$product->Name()是错的,Magento的商品名称获取方法是标准的驼峰式getter:$product->getName(),这个方法名拼写错误也会导致PHP输出异常,进而引发JS语法错误。
修正后的代码方案
这里给你两种可靠的写法:
写法1:直接嵌入PHP输出到JS拼接中
var testVar = "12345::'" + <?php echo $product->getPrice(); ?> + "'::'" + "<?php echo $product->getName(); ?>" + "'::ProductID";
写法2:先在PHP中定义变量,再嵌入JS(更清晰易维护)
<?php // 先在PHP层获取并存储变量 $productPrice = $product->getPrice(); $productName = $product->getName(); ?> // 再在JS中使用已经处理好的变量值 var testVar = "12345::'<?php echo $productPrice; ?>'::'<?php echo $productName; ?>'::ProductID";
效果示例
当你的商品价格是45.00、名称是Product Name Here时,服务器渲染后输出的纯JS代码会是:
var testVar = "12345::'45.00'::'Product Name Here'::ProductID";
这样JS就能正常解析,不会再出现语法错误啦。
内容的提问来源于stack exchange,提问作者Ryan H
相关产品推荐
相关产品推荐

