Attributes

Attributes in Sylius allow you to define shared traits among entities. For example, products within the same category may share common attributes, such as a book's number of pages, the brand of a T-shirt, or any other relevant detail.

Attribute

The Attribute model has a translatable name (for instance Book pages), code (book_pages) and type (integer). There are a few available types of an Attribute:

Type
Example Use Case

Text (default)

Brand of a T-shirt

Checkbox

Whether a T-shirt is made of cotton

Integer

Number of items in a set

Percent

Cotton percentage in clothing

Textarea

Detailed product description

Date

Movie release date

Datetime

Event date and time

Select

Book genre (multiple selection possible)

Non-translatable attribute

Some attributes (dates, author name) don’t need a different value in each locale. For those attributes, we introduced the possibility of disabling translation. Shop Owner declares values only once and regardless of the chosen locale customer will see a proper attribute value.

How to create an Attribute?

To give you a better insight into Attributes, let’s have a look at how to prepare and add an Attribute with a Product to the system programmatically.

To assign Attributes to Products firstly you will need a factory for ProductAttributes. The AttributeFactory has a special method createTyped($type), where $type is a string.

The Attribute needs a code and a name before it can be saved in the repository.

In order to assign value to your Attribute you will need a factory of ProductAttributeValues, use it to create a new value object.

Attach the new AttributeValue to your Attribute and set its value, which is what will be rendered in the front end.

Finally, let’s find a product that will have your newly created attribute.

Now let’s see what has to be done if you would like to add an attribute of integer type. Let’s find such a one in the repository, it will be for example the BOOK-PAGES attribute.

After adding attributes remember to flush the product manager.

Your Product will now have two Attributes.

Last updated

Was this helpful?