Я только начал с магазина и столкнулся с «простой» проблемой.Я работал с на сайте разработчика Tutorials / FAQ, но не могу выяснить свою проблему.
Я искал в Интернете, но ничего не нашел с "2 плагинами для ApiExtension, которые блокируют друг друга",Так что, может быть, нет проблем?
Я установил Плагин, который предоставляется магазином в его руководстве: https://developers.shopware.com/developers-guide/rest-api/extend-api-resource/
Я прочитал и (я думал) узнал, как он работал,Поэтому я создал свой собственный плагин, используя предоставленный в качестве «скелета».Я изменил пространства имен на мой слизень.Кроме того, я изменил имя поля, которое должно быть добавлено к результату для целей тестирования.Пока я пытался выяснить, я изменил имя класса на «Статьи» вместо «Статья».
Результат, который я ожидал: если оба плагина активированы, оба поля будут присоединены.
Результат:
Если активирован только мой плагин, вызов API / статей возвратит результат с моим (правильным) полем «MyCustomField2».
Если оба плагина активированы, при вызове API / статей будет возвращено только поле, добавленное образцом плагина для магазина."MyCustomField".
Я выполнил обработку с помощью xdebug в php storm.Я вижу, что плагин загружен, контейнер инициализирован.Но в конце он не запустил мой плагин.Или действительно не возможно, чтобы 2 плагина расширяли один и тот же ресурс API?Мне нужна помощь и объяснение.
заранее спасибо - mike
smikeasmtools / Components / Api / Resource / Articles.php
namespace SmikeAsmTools\Components\Api\Resource;
class Articles extends \Shopware\Components\Api\Resource\Article
{
/**
* @inheritdoc
*/
public function getList($offset = 0, $limit = 25, array $criteria = [], array $orderBy = [], array $options = [])
{
$result = parent::getList($offset, $limit, $criteria, $orderBy, $options);
foreach($result['data'] as &$article) {
$article['MyCustomField2'] = 'CustomContent';
}
return $result;
}
}
smikeasmtools / Resources / services.xml
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="smike_asm_tools.article_resource"
class="SmikeAsmTools\Components\Api\Resource\Articles"
decorates="shopware.api.article"
public="false"
shared="false">
</service>
</services>
</container>
smikeasmtools / SmikeAsmTools.php
<?php
namespace SmikeAsmTools;
use Shopware\Components\Plugin;
class SmikeAsmTools extends Plugin
{
}