2. Twig status helper¶
The bundle comes with a Twig helper allowing you to generate CSS class names, depending on an entity field.
2.1. Define a service¶
Each service you want to define must implement the Sonata\Twig\Status\StatusClassRendererInterface
interface:
namespace Sonata\Component\Order;
use Sonata\Twig\Status\StatusClassRendererInterface;
class OrderStatusRenderer implements StatusClassRendererInterface
{
public function handlesObject($object, $statusName = null)
{
// Logic validating if the render is applicable for the given object
}
public function getStatusClass($object, $statusName = null, $default = "")
{
// Label to render
}
}
Now that we have defined our service, we will add it using the sonata.status.renderer
tag, just as follow:
- YAML
1 2 3 4 5
services: sonata.order.status.renderer: class: Sonata\Component\Order\OrderStatusRenderer tags: - { name: sonata.status.renderer }
- XML
1 2 3
<service id="sonata.order.status.renderer" class="Sonata\Component\Order\OrderStatusRenderer"> <tag name="sonata.status.renderer"/> </service>
2.2. Use the service¶
You can now call your helper in your twig views using the following code:
1 | {{ my_object|sonata_status_class(status_name, 'default_value') }}
|