在 magento 中获取下拉属性的值时加载问题
Loading issue while fetching values of dropdown attribute in magento
有一个名为 "Model" 的属性,其类型为下拉。属性代码为 wheel_model
。
此下拉菜单有 2585 个选项。
我在很多页面上都使用了这个下拉菜单来允许用户select车轮模型和过滤产品列表。
下面是从数据库中获取下拉值的代码:
$arrval = array();
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'wheel_model');
foreach ($attribute->getSource()->getAllOptions(false) as $option) {
$arrval[$option['value']] = $option['label'];
}
我正在获取数组中的所有下拉值,我在 phtml 中使用它如下:
<select name='wheel_model'>
<option>Select Model</option>
<?php
foreach ($arrval as $value => $label) {
echo "<option value='" . $value . "'>" . $label . "<option>";
}
?>
</select>
加载下拉值花费了太多时间。有什么方法可以将此下拉列表存储在缓存中并在需要时从缓存中检索?
使用下面的代码将数据存储在缓存中就可以了。
$cacheId = 'my_cache_id';
if (false !== ($data = Mage::app()->getCache()->load($cacheId))) {
$data = unserialize($data);
} else {
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'wheel_model');
foreach ($attribute->getSource()->getAllOptions(false) as $option) {
$data[$option['value']] = $option['label'];
}
Mage::app()->getCache()->save(serialize($data), $cacheId);
}
有一个名为 "Model" 的属性,其类型为下拉。属性代码为 wheel_model
。
此下拉菜单有 2585 个选项。
我在很多页面上都使用了这个下拉菜单来允许用户select车轮模型和过滤产品列表。
下面是从数据库中获取下拉值的代码:
$arrval = array();
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'wheel_model');
foreach ($attribute->getSource()->getAllOptions(false) as $option) {
$arrval[$option['value']] = $option['label'];
}
我正在获取数组中的所有下拉值,我在 phtml 中使用它如下:
<select name='wheel_model'>
<option>Select Model</option>
<?php
foreach ($arrval as $value => $label) {
echo "<option value='" . $value . "'>" . $label . "<option>";
}
?>
</select>
加载下拉值花费了太多时间。有什么方法可以将此下拉列表存储在缓存中并在需要时从缓存中检索?
使用下面的代码将数据存储在缓存中就可以了。
$cacheId = 'my_cache_id';
if (false !== ($data = Mage::app()->getCache()->load($cacheId))) {
$data = unserialize($data);
} else {
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'wheel_model');
foreach ($attribute->getSource()->getAllOptions(false) as $option) {
$data[$option['value']] = $option['label'];
}
Mage::app()->getCache()->save(serialize($data), $cacheId);
}