Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Opencart:在订单发票中显示产品属性_Php_Opencart - Fatal编程技术网

Php Opencart:在订单发票中显示产品属性

Php Opencart:在订单发票中显示产品属性,php,opencart,Php,Opencart,我想做的是在OpenCart中显示发票上的产品属性。 我是一个PHP初学者,我能做的事情很少。我知道MVC和OpenCart的基本知识 我需要为订单中的每个产品提取$product['attributes],并将其加载到控制器文件中,以便在订单\u invoice.tpl视图文件中使用 到目前为止,我想到的是: 'attributes' => $this->model_catalog_product->getProductAttributes($result['product

我想做的是在OpenCart中显示发票上的产品属性。 我是一个PHP初学者,我能做的事情很少。我知道MVC和OpenCart的基本知识

我需要为订单中的每个产品提取
$product['attributes]
,并将其加载到控制器文件中,以便在
订单\u invoice.tpl
视图文件中使用

到目前为止,我想到的是:

 'attributes' => $this->model_catalog_product->getProductAttributes($result['product_id']);
将其添加到订单发票的控制器文件中,但我不确定在何处以及如何添加,而且,如果产品具有多个属性,我需要将其加载到数组中

然后在
order\u invoice.tpl
上,我需要按照这句话重复一些内容

 <?php foreach ($order['product'] as $product) { ?>
     <?php foreach ($product['attributes'] as $attribute) { ?>

        <?php echo $product['attribute']; ?>

     <?php } ?> // END FOREACH ATTRIBUTE
<?php } ?> // END FOREACH PRODUCT

//结束FOREACH属性
//最终产品
现在我知道这不是“美学上”回应PHP的正确方法,它应该在一组PHP标记之间,但对于像我这样的初学者来说,更容易看到我在做什么,以及是否有语法错误


有人能帮我写下这篇文章,让它充分发挥作用吗?

你做得很好,思维也很好

用于加载属性的行可以放在此处的某个位置(在控制器中,方法
invoice()
):

这已经加载了与产品链接的所有属性的数组。现在将这些属性分配给下面几行的产品:

                $product_data[] = array(
                    'name'     => $product['name'],
                    'model'    => $product['model'],
                    'option'   => $option_data,
                    'quantity' => $product['quantity'],
                    'price'    => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']),
                    'total'    => $this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value'])
                    'attributes' => $attributes
                );
控制器应该就这些了,现在只需使用您在问题中询问的模板代码。在每一行上使用
并不是不美观的,而是推荐的PHP输出方式。当处理模板时,将代码视为HTML代码,HTML必须具有优先权。然后,所有对HTML代码的PHP修改都应该放在它的单独一行中,以保持更好的准备状态。例外情况可能是变量的回显,例如

<div class="some-class"><?php echo $myVariable ?></div>
但我个人建议不惜一切代价避免在模板中使用
switch
语句,因为您甚至可以从上面的示例中看到,它会造成HTML和PHP标记的混乱,可读性较差。。。改用
if-elseif
语句

<div class="some-class"><?php echo $myVariable ?></div>
<ul>
    <?php foreach ($products as $product) { ?>
    <li><?php echo $product['name'] ?></li>
    <?php } ?>
</ul>
<div>
<?php switch ($var) {
    case true: ?>
    <?php echo 'THIS IS GONNA HAPPEN.' ?>
    <?php break ?>
<?php } ?>