magento2 aja
magento2 front-end大量运用了KnockoutJS,大量的数据能即时更新并且不需要刷新页面,数据无疑是通过AJAX方式获取,但为了效率,AJAX下载后数据会保存到Storage,只有被通知数据过期时才会再次从AJAX更新数据。因此并不能仅仅使用传统的AJAX,需要把流程封装起来。magento2的确提供了一套方法,无奈并没有文档说明,只能自己研究。
magento2把AJAX数据分类打包,分成若干个section,而每个section对应一个能获取数据的PHP类。所以第一步应该声明一个section与定义一个类。
用di.xml声明section并指定PHP类
Vendor\Samples\CustomerData\Book
创建PHP类,必须定义getSectionData并返回array数据,它会以JSON格式提交到前端
// Vendor/Samples/CustomerData/Book.php
namespace Vendor\Samples\CustomerData;
use Magento\Customer\CustomerData\SectionSourceInterface;
class Book extends \Magento\Framework\DataObject implements SectionSourceInterface
{
/
- {@inheritdoc}
*/
public function getSectionData()
{
return [
'message' => 'hello world'
];
}
}
完成以上两步并清除缓存,就可以在前端任意位置把数据读出来
require( [ 'Magento_Customer/js/customer-data' ], function( customerData ) {
// 使名叫book的section失效,系统会自动通过ajax更新数据
customerData.invalidate(['book']);
// 获取数据是observe,不会马上得到值,需要等待被通知更新
var book = customerData.get('book');
setTimeout(function(){
console.log(book().message);
}, 3000);
} );
关键字:magento2
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!