SyliusCon 2025
Early Bird Deal
LogoLogo
🛣️ Roadmap💻 Sylius Demo💬 Community Slack
  • Sylius Documentation
  • Sylius Plugins
  • Sylius Stack
  • 📖Sylius 2.0 Documentation
    • Organization
      • Release Cycle
      • Backwards Compatibility Promise
      • Sylius Team
      • Sylius Roadmap
  • Getting Started with Sylius
    • Installation
    • Basic Configuration
    • Shipping & Payment
    • First Product
    • Customizing the Shop
    • Customizing Business Logic
    • Using API
    • Installing Plugins
    • Deployment
    • Summary
  • The Book
    • Introduction to Sylius
    • Installation
      • System Requirements
      • Sylius CE Installation
        • Sylius CE Installation with Docker
      • ➕Sylius Plus Installation
      • Upgrading Sylius CE
      • Upgrading Sylius Plus
    • Architecture
      • Architecture Overview
      • Architectural Drivers
      • Resource Layer
      • State Machine
      • Translations
      • E-Mails
      • Contact
      • Fixtures
      • Events
    • Configuration
      • Channels
      • Locales
      • Currencies
    • Customers
      • Customer & ShopUser
      • ➕Customer Pools
      • AdminUser
      • Addresses
        • Countries
        • Zones
        • Addresses
        • Address Book
    • Products
      • Products
      • Product Reviews
      • Product Associations
      • Attributes
      • Pricing
      • Catalog Promotions
      • Taxons
      • Inventory
      • ➕Multi-Source Inventory
      • Search
    • Carts & Orders
      • Orders
      • Cart flow
      • Taxation
      • Adjustments
      • Cart Promotions
      • Coupons
      • Payments
      • 🧩Invoices
      • Shipments
    • Support
    • Contributing
      • Contributing Code
        • Submitting a Patch
        • ⚠️Security Issues
        • Coding Standards
        • Conventions
        • Sylius License and Trademark
      • Contributing Translations
      • Key Contributors
  • The Customization Guide
    • Customizing Models
      • How to add a custom model?
      • How to add a custom translatable model?
    • Customizing Forms
      • How to add a live form for a custom model?
    • Customizing Styles
    • Customizing Validation
    • Customizing Menus
    • Customizing Templates
    • Customizing Translations
    • Customizing Flashes
    • Customizing State Machines
    • Customizing Grids
    • Customizing Fixtures
    • Customizing API
    • Customizing Serialization of API
    • Customizing Payments
      • How to integrate a Payment Gateway as a Plugin?
  • 🧑‍🍳The Cookbook
  • How to resize images?
  • How to add one image to an entity?
  • How to add multiple images to an entity?
  • Sylius 1.X Documentation
    • 📓Sylius 1.x Documentation
Powered by GitBook
LogoLogo

Developer

  • Community
  • Online Course

About

  • Team

© 2025 Sylius. All Rights Reserved

On this page
  • Different menu root
  • Shop Billing Data

Was this helpful?

Edit on GitHub
  1. The Book
  2. Configuration

Channels

In the modern world of e-commerce, your website is no longer the only point of sale for your goods.

The 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),

  • countries,

  • themes,

  • hostnames,

  • taxes,

  • payment and shipping methods,

  • menu.

A Channel has a code, a name and a color.

To make the system more convenient for the administrator, there is just one, shared admin panel. Users are also shared among the channels.

Different menu root

By default, Sylius will render the same menu for all channels defined in the store, which will be all the children of the taxon with the code category. You can customize this behavior by specifying a menu taxon in the “Look & feel” section of the desired channel.

With this configuration, this particular channel will expose a menu starting from the children of the chosen taxon (T-Shirt taxon in this example):

The rest of the channels will still render only children of category taxon.

How to get the current channel?

You can get the current channel from the channel context.

$channel = $this->container->get('sylius.context.channel')->getChannel();

Beware! When using multiple channels, remember to configure hostname for each of them. If missing, the default context will not be able to provide an appropriate channel, resulting in an error.

The channel is by default determined based on the hostname, but you can customize that behavior. 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. You should also add a priority="64" since the default ChannelContext has a priority="0" (and by default a priority="0" is assigned).

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

Business Units

Sylius Plus is supplied with an enhanced version of Shop Billing Data from Sylius CE. It is also used for Invoicing and Refunds purposes. Still, it is a separate entity, that you can create outside of the Channel and then pick a previously created Business Unit on the Channel form.

PreviousConfigurationNextLocales

Last updated 5 months ago

Was this helpful?

In the dev environment, you can easily check what channel you are currently on in the Symfony debug toolbar.

For and purposes Channels are supplied with a section named Shop Billing Data, which is editable on the Channel create/update form.

Invoicing
Credit Memo