这是一个发货模块,允许您选择商店分支进行本地取件。 分支列在csv中,而不是在数据库中。
<?php
if ( ($n > 1) || ($n2 > 1) ) {
if ($quotes[$i]['id'] == 'localdelivery') {
if (file_exists($quotes[$i]['pricesL'])) {
echo '<td class="main" style="padding-right:15px;"><select name="locdeliv">';
$file_handle = fopen($quotes[$i]['pricesL'], "r");
while (!feof($file_handle)) {
$line_of_text = fgetcsv($file_handle, 1024);
echo '<option value="' . $line_of_text[1] . '">' . $line_of_text[0] . '</option>';
}
fclose($file_handle);
}
else {
echo '<td class="main"><select name="locdeliv"><option value="0">file missing</option>';
}
echo '</select></td>';
}
//else {
?>
工作正常。 以下是显示用户看到的送货说明的代码:
function quote($method = '') {
global $order;
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_LOCALDELIVERY_TEXT_TITLE,
'pricesL' => MODULE_SHIPPING_LOCALDELIVERY_PRICESFILE,
'methods' => array(array('id' => $this->code,
'title' => print $line_of_text[1],
'cost' => MODULE_SHIPPING_LOCALDELIVERY_COST)));
if ($this->tax_class > 0) {
$this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
}
if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);
return $this->quotes;
}
这部分
'title' => print $line_of_text[1],
我需要回复用户从下拉列表中选择的内容。我尝试了各种各样的东西,比如$ file_handle等,但结果总是得到“1”。 有没有一种简单的方法可以将选定的下拉值转换为“标题”? 这允许标题稍后保存在数据库中。在其他模块中,'title'取自语言文件,因此它永远不会来自数据库,并且结帐页面“不关心”该行是什么,它将它保存到数据库中,以便我可以看到选择了哪个选项在行政中。 使用CSV的原因是公司经常更新分支机构,这是经常更新的最简单方法。
答案 0 :(得分:0)
您在定义变量时尝试使用programming construct
(print
) - 这是不正确的语法。
您需要做的是使用函数Quote
,并从返回的数组中获取值。
$result = $obj->quote();
$title = $result['methods'][0]['title'];
print $title;
编辑以详细说明:
您的功能quote
引用了$this
,这意味着它是method
中的class
。
为了能够使用此方法,您需要将其称为类本身的外部。我们称之为客户端代码。
class Foo
{
public function quotes() {
// ** all your code **
return $this->quotes;
}
}
// outside the class, so client code
$foo = new Foo();
$result = $foo->quote();
$title = $result['methods'][0]['title'];
print $title;