我在我的电子商店使用Prestashop 1.6。我开始进行一些升级。 现在我正在堆叠问题以获取客户送货地址的国家名称。
当我在第4步(“送货”)时,有人知道如何从订单结帐的第3步(地址)获取国家名称?
在什么变量($ cart - > ...)中放置了这种类型的信息?
我开始更改order-carrier.tpl并添加
<input type="hidden" value="{$cart->id_address_delivery}"/>
结果是我得到一些号码。我没有找到这个数字指向的信息。
<div class="delivery_option_price">
<input type="hidden" value="{$cart->id_address_delivery}"/>
{if $option.total_price_with_tax && !$option.is_free && (!isset($free_shipping) || (isset($free_shipping) && !$free_shipping))}
{if $use_taxes == 1}
{if $priceDisplay == 1}
{convertPrice price=$option.total_price_without_tax}{if $display_tax_label} {l s='(tax excl.)'}{/if}
{else}
{convertPrice price=$option.total_price_with_tax}{if $display_tax_label} {l s='(tax incl.)'}{/if}
{/if}
{else}
{convertPrice price=$option.total_price_without_tax}
{/if}
{else}
{l s='Free'}
由于
答案 0 :(得分:1)
默认情况下,Prestashop并未将整个客户地址保持在会话中以达到性能目的,但它会使用$ cart-&gt; id_address_delivery和$ cart-&gt; id_address_invoice属性保留参考。
这两个属性将保存在地址上的id
的 ps_address 强>
table,所以如果你想要检索一个地址的所有信息,你所要做的就是创建一个具有给定id的new Address()
对象。
我们应该在Controller中执行此操作,正是在CheckO功能所在的ParentOrderController中,我们正在寻找的函数应该是_assignCarrier()。
(Please remember to extend the controller functionality with the override feature Prestashop offers, to avoid un-upgradable code.)
在_assignCarrier()函数内部,我们将创建我们的地址对象,然后通过此获取国家/地区名称:
//create an address object by retrieving the id from the current cart.
$address = new Address($this->context->cart->id_address_delivery);
//now the country name will now be in the "$address->country" field so if you want to pass it to your smarty template use:
$this->context->smarty->assign('country_name', $address->country);
最后我们将我们的国家/地区名称提供给我们的模板,因此我们只需要显示它,您的模板中的代码就会变为:
<div class="delivery_option_price">
<input type="hidden" value="{$country_name}"/>