【发布时间】:2017-01-17 06:59:53
【问题描述】:
我正在使用 magento 2.1.0,我是 magento 新手,所以我无法获得实际结果。
我已经创建了这个块:
public function serviceArea() {
return $this->getArea1('2');
}
public function getArea1($city_id) {
return $this->areaModel->getCollection()->addFieldToFilter('city_id',$city_id);
}
我这样打电话:
$areaCollection = $block->getLayout()->createBlock('XXXX\Vac \Block\Vac')->serviceArea();
print_r($areaCollection->getData());
我得到这样的输出:
Array ( [0] => Array ( [area_id] => 1 [area] => banashankari [city_id] => 2 ) [1] => Array ( [area_id] => 2 [area] => madiwala [city_id] => 2 ) [2] => Array ( [area_id] => 3 [area] => btm layout [city_id] => 2 ) )
现在,我希望将其用于我的 onchange 过程,例如当我在下拉列表中更改城市时,我的区域将相应更改。
为此。我写脚本:
<script>
require(['jquery'], function(jQuery) {
jQuery('#city').on('change', function () {
jQuery.ajax({
url: "<?php echo $this->getBaseUrl('*/*/*', ['_current' => true, '_use_rewrite' => true]).'Vac/area/index/'; ?>",
// url: "getAjaxUrl()",
data: {city_id: jQuery("#city").val()},
type: "POST",
success: function(data) {
jQuery('#area').html(data['html']);
}
});
});
});
</script>
在脚本中,我给出了控制器的 url。但我不知道在那里做什么,或者我必须修改脚本。请帮忙。
【问题讨论】:
-
您需要从控制器设置适当的响应,并基于该响应,您需要在 Jquery 的成功操作中执行代码以在下拉列表中显示该内容。
-
@sam:你有答案吗?
-
@MujeebuRahman : 是的 mujeebu,我得到了答案,只需要使用循环在控制器中编写执行函数
标签: php jquery magento magento2