mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-14 17:10:53 +00:00
97 lines
3.2 KiB
ReStructuredText
97 lines
3.2 KiB
ReStructuredText
.. index::
|
|
single: Channels
|
|
|
|
Channels
|
|
========
|
|
|
|
In the modern world of e-commerce your website is no longer the only point of sale for your goods.
|
|
|
|
**Channel** model represents a single sales channel, which can be one of the following things:
|
|
|
|
* Webstore
|
|
* Mobile application
|
|
* Cashier in your physical store
|
|
|
|
Or pretty much any other channel type you can imagine.
|
|
|
|
**What may differ between channels?** Particularly anything from your shop configuration:
|
|
|
|
* products,
|
|
* currencies,
|
|
* locales (language),
|
|
* themes,
|
|
* hostnames,
|
|
* taxes,
|
|
* payment and shipping methods.
|
|
|
|
A **Channel** has a ``code``, a ``name`` and a ``color``.
|
|
|
|
In order to make the system more convenient for the administrator - there is just one, shared admin panel. Also users are shared among the channels.
|
|
|
|
.. tip::
|
|
|
|
In the dev environment you can easily check what channel you are currently on in the Symfony debug toolbar.
|
|
|
|
.. image:: ../../_images/channel_toolbar.png
|
|
:align: center
|
|
|
|
**How to get the current channel?**
|
|
|
|
You can get the current channel from the channel context.
|
|
|
|
.. code-block:: php
|
|
|
|
$channel = $this->container->get('sylius.context.channel')->getChannel();
|
|
|
|
.. warning::
|
|
|
|
Beware! When using multiple channels, remember to configure ``hostname`` for **each** of them.
|
|
If missing, default context would not be able to provide appropriate channel and it will result in an error.
|
|
|
|
.. note::
|
|
|
|
The channel is by default determined basing on the hostname, but you can customize that behaviour.
|
|
To do that you have to implement the ``Sylius\Component\Channel\Context\ChannelContextInterface``
|
|
and register it as a service under the ``sylius.context.channel`` tag. Optionally you can add a ``priority="-64"``
|
|
since the default ChannelContext has a ``priority="-128"``, and by default a ``priority="0"`` is assigned.
|
|
|
|
.. note::
|
|
|
|
Moreover if the channel depends mainly on the request you can implement the ``Sylius\Component\Channel\Context\RequestBased\RequestResolverInterface``
|
|
with its ``findChannel(Request $request)`` method and register it under the ``sylius.context.channel.request_based.resolver`` tag.
|
|
|
|
Shop Billing Data
|
|
-----------------
|
|
|
|
For :doc:`Invoicing </book/orders/invoices>` and :doc:`Credit Memo </book/orders/refunds>` purposes Channels are
|
|
supplied with a section named Shop Billing Data, which is editable on the Channel create/update form.
|
|
|
|
.. image:: ../../_images/shop_billing_data.png
|
|
:align: center
|
|
|
|
.. rst-class:: plus-doc
|
|
|
|
Business Units
|
|
~~~~~~~~~~~~~~
|
|
|
|
Sylius Plus is supplied with an enhanced version of Shop Billing Data from open source edition. It is also used for Invoicing and Refunds purposes,
|
|
but it is a separate entity, that you can create outside of the Channel and then just pick a previously created Business Unit
|
|
on the Channel form.
|
|
|
|
.. image:: ../../_images/sylius_plus/business_units.png
|
|
:align: center
|
|
|
|
.. image:: ../../_images/sylius_plus/business_unit_form.png
|
|
:align: center
|
|
|
|
.. image:: ../../_images/sylius_plus/channel_business_unit.png
|
|
:align: center
|
|
|
|
.. image:: ../../_images/sylius_plus/banner.png
|
|
:align: center
|
|
:target: http://sylius.com/plus/?utm_source=docs
|
|
|
|
Learn more
|
|
----------
|
|
|
|
* :doc:`Channel - Component Documentation </components_and_bundles/components/Channel/index>`.
|