Monthly Archives: December 2017
У Magento 2 з’явились плагіни-перехоплювачі (Magento 2 plugins, Magento 2 interceptors), які дозволяють виконати власний код до/після та навколо виклику публічного методу класу.
Наприклад, є клас PHP з відкритими функціями "setName", "getName", "save":
<?php
namespace VendorName\ModuleName\Folder;
class SomeModel
{
private $name;
public function setName($name, $storeId = 0) {
$this->name[0] = $name;
}
public function getName($storeId = 0) {
return $this->name[$storeId];
}
public function save($fields, $customData) {
/* some save logic here */
}
}
Як створити плагін в Magento 2?
1. Створіть файл etc/di.xml у папці вашого модуля, помістивши у нього код:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="VendorName\ModuleName\Foder\SomeModel">
<plugin name="mycompany_mymodule_plugin_modulename_foder_somemodel"
type="MyCompany\MyModule\Plugin\ModuleName\Foder\SomeModelPlugin" sortOrder="10" />
</type>
</config>
Робота з URL у .phtml темплейт файлах
1. Отримання посилання на головну сторінку магазину (http://domain.com/):
<?= $this->getUrl() ?>
2. Отримання посилання на певну сторінку, для прикладу, "Contact Us" (http://domain.com/contacts/):
<?= $this->getUrl('contacts') ?>
3. Для отримання посилання на статичний файл теми, для прикладу:
app/design/frontend/ThemeVendor/theme_name/web/css/custom.css
app/design/frontend/ThemeVendor/theme_name/Magefan_Blog/web/js/lazyload.js
app/code/Magefan_Blog/view/frontend/web/js/lazyload.js
vendor/magefan/module-blog/view/frontend/web/js/lazyload.js
використовуйте код:
<?= $this->getViewFileUrl('css/custom.css') ?>
<?= $this->getViewFileUrl('Magefan_Blog::js/lazyload.js') ?>
Використовуйте код, для того, щоб вставити темплейт блок у WYSIWYG (Важливо! Додайте його в середину подвійних фігурних дужок):
block class="Magento\Framework\View\Element\Template" template="Magefan_Blog::content/block-template-example.phtml"
У попередніх статтях ми продемонстрували, як створити нові таблиці у базі даних Magento 2. З цієї статті ви дізнаєтеся про моделі для роботи з даними бази даних, які дозволять читати, редагувати та видаляти дані.
Magento 2 і Magento 1 для цих цілей використовує Model/ResourceModel/Collection ORM (Object-relational mapping). Для реалізації такої концепції необхідно створити 3 файли (модель, ресурс модель, колекцію).