Passa al contenuto principale

Pulsanti Semplici

Version ≥ 3.7

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

Configurazione

Button Renderer

Le Custom Renderer Class attualmente supportate sono:

  • Sintra\CoreBundle\Renderer\ButtonDownloadRenderer
  • Sintra\CoreBundle\Renderer\ButtonImportRenderer
  • Sintra\CoreBundle\Renderer\ButtonRemoveRenderer
  • Sintra\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;
}
}