Pulsanti Semplici
E' possibile aggiungere pulsanti semplici (che chiamano direttamente un controller senza dialog) tramite i renderer di Pimcore.
Configurazione

Le Custom Renderer Class attualmente supportate sono:
Sintra\CoreBundle\Renderer\ButtonDownloadRendererSintra\CoreBundle\Renderer\ButtonImportRendererSintra\CoreBundle\Renderer\ButtonRemoveRendererSintra\CoreBundle\Renderer\ButtonUploadRenderer
La differenza tra i vari renderer è l'icona presente nel bottone.
Il campo Data passed to renderer identifica il nome riportato sul pulsante.
Servizio
Il pulsante richiama un controller generico che ricerca i servizi con il tag: sintra.core.handler_renderer_service.
Metodi del servizio:
getClassName(): string- Ritorna il nome completo della classe del DataObject su cui agire (combinato con il FieldName funge da match per trovare il servizio corretto).getFieldName(): string- Ritorna il nome del campo associato al pulsante (combinato con la ClassName funge da match per trovare il servizio corretto).executeHandler(Concrete $object): HandlerRendererModel- Esegue la logica del pulsante.showButton(Concrete $object, array $params): bool- Ritorna true se il pulsante deve essere mostrato (default true).isButtonActive(Concrete $object, array $params): bool- Ritorna true se il pulsante deve essere attivo (default true).showConfirmationModal(Concrete $object, array $params): bool- Ritorna true se deve essere mostrato un modale di conferma (default false).getWidthInPixels(Concrete $object): int- Ritorna la larghezza del modale in pixel (default 200).getHeightInPixels(Concrete $object): int- Ritorna l'altezza del modale in pixel (default 50).
Esempio di servizio:
<?php
namespace Sintra\OmsBundle\Service\Stock;
use InvalidArgumentException;
use Pimcore\Model\DataObject\Concrete;
use Pimcore\Model\DataObject\SalesChannel;
use Sintra\CoreBundle\Model\HandlerRendererModel;
use Sintra\CoreBundle\Service\HandlerRenderer\IHandlerRenderer;
use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag;
#[AutoconfigureTag(self::SERVICE_TAG)]
class DoSomethingHandlerRenderer extends AbstractHandlerRenderer
{
public function __construct()
{
// Inject here your services
}
public function getClassName(): string
{
return SalesChannel::class;
}
public function getFieldName(): string
{
return '<fieldNameOnDataObject>';
}
public function executeHandler(Concrete $object): HandlerRendererModel
{
// Do here your logic
$model = new HandlerRendererModel();
$model->setResult("Insert your message result here.");
return $model;
}
public function showButton(Concrete $object, array $params): bool
{
return true;
}
public function isButtonActive(Concrete $object, array $params): bool
{
return true;
}
public function showConfirmationModal(Concrete $object, array $params): bool
{
return false;
}
public function getWidthInPixels(Concrete $object): int
{
return 200;
}
public function getHeightInPixels(Concrete $object): int
{
return 50;
}
}