Field types
This is the list of built-in field types.
String
The simplest column type, which displays the value at the specified path as plain text.
By default, it uses the name of the field, but you can specify a different path if needed. For example:
sylius_grid:
grids:
app_user:
fields:
email:
type: string
label: app.ui.email # each field type can have a label, we suggest using translation keys instead of messages
path: contactDetails.email
This configuration will display the value of $user->getContactDetails()->getEmail()
.
DateTime
This column type works exactly the same way as StringField, but expects a DateTime instance and outputs a formatted date and time string.
Available options:
format
- defaults toY:m:d H:i:s
, you can set it to any supported format (see https://www.php.net/manual/en/datetime.format.php)timezone
- defaults to%sylius_grid.timezone%
parameter, null if such a parameter does not exist, you can set it to any supported timezone (see https://www.php.net/manual/en/timezones.php)
sylius_grid:
grids:
app_user:
fields:
birthday:
type: datetime
label: app.ui.birthday
options:
format: 'Y:m:d H:i:s'
timezone: null
If you want to call the setOptions
function, you must pass both 'format'
and 'timezone'
as arguments again. Otherwise, they will be unset.
$field->setOptions([
'format' => 'Y-m-d H:i:s',
'timezone' => 'null'
// Your options here
]);
Twig
The Twig column type is the most flexible one, because it delegates the logic of rendering the value to the Twig templating engine. First, you must specify the template you want to render.
sylius_grid:
grids:
app_user:
fields:
name:
type: twig
label: app.ui.name
options:
template: "@Grid/Column/_prettyName.html.twig"
Then, within the template, you can render the field's value via the data
variable.
<strong>{{ data }}</strong>
If you wish to render more complex grid fields, just redefine the path of the field to root in your grid – path: .
and then you can access all attributes of the object instance:
<strong>{{ data.name }}</strong>
<p>{{ data.description|markdown }}</p>
If you want to call the setOptions
function, you must pass 'template'
as an argument again. Otherwise, it will be unset.
$field->setOptions([
'template' => ':Grid/Column:_prettyName.html.twig',
// Your options here
]);
Last updated
Was this helpful?