Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Пример создания вложенной структуры #2

Open
aboritskiy opened this issue Sep 7, 2017 · 1 comment
Labels

Comments

@aboritskiy
Copy link

пытаюсь использовать библиотеку для отправки документа содержащего вложенные структуры, например таких как корзина с продуктами в интернет магазине, см. пример:

<entry xml:base="..."
       xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
       xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
    <id>.../shopping_cartSet('')</id>
    <title type="text">...</title>
    <category term="..." scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
    <link href="shopping_cartSet('')" rel="edit" title="shopping_cart"/>
    <link href="shopping_cartSet('')/getarticles"
          rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/getarticles"
          type="application/atom+xml;type=feed" title="getarticles">
        <m:inline>
            <feed xml:base=".../">
                <id>.../shopping_cartSet('')/getarticles</id>
                <title type="text">articlesSet</title>
                <link href="shopping_cartSet('')/getarticles" rel="self" title="articlesSet"/>
                <entry>
                ...
                </entry>
                <entry>
                ...
                </entry>
            </feed>
        </m:inline>
    </link>
    <content type="application/xml">
        <m:properties>
            ...
        </m:properties>
    </content>
</entry>

см. также https://tools.ietf.org/id/draft-snell-atompub-inline-01.html

и пока не очень понятно можно ли это сделать используя уже существующую функциональность или требуется добавить что-то.

Поэтому пара вопросов:

  1. Какой предполагается сценарий использования метода
    \Mekras\OData\Client\Element\Entry::addRelation()

  2. Можно ли заменить класс \Mekras\Atom\Element\Link на расширенный (поддерживающий вложения) не меняя кода библиотеки?

Спасибо.

@mekras
Copy link
Owner

mekras commented Sep 7, 2017

Давно уже не работал этой библиотекой…

Насколько я помню, поддержки элемента inline нет.

Какой предполагается сценарий использования метода
\Mekras\OData\Client\Element\Entry::addRelation()

Особые сценарии не подразумевались. Когда писалась эта библиотека, была задача — как можно полнее реализовать клиентскую часть OData 2.0 (такой уж у нас был сервер).

Конкретно этот метод нужен для поддержки элементов link, как показано здесь.

Можно ли заменить класс \Mekras\Atom\Element\Link на расширенный (поддерживающий вложения) не меняя кода библиотеки?

Теоретически можно. Надо создать свой класс расширения, реализующий интерфейс ElementExtension по аналогии с AtomPubExtension. Затем зарегистировать его как-то так:

$service->getDocumentFactory()->getExtensions()->register(new YourExtension());

@mekras mekras added the question label Sep 7, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants