vendor/easycorp/easyadmin-bundle/src/Dto/ActionDto.php line 11
<?php
namespace EasyCorp\Bundle\EasyAdminBundle\Dto;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use Symfony\Contracts\Translation\TranslatableInterface;
/**
* @author Javier Eguiluz <javier.eguiluz@gmail.com>
*/
final class ActionDto
{
private ?string $type = null;
private ?string $name = null;
private TranslatableInterface|string|null $label = null;
private ?string $icon = null;
private string $cssClass = '';
private string $addedCssClass = '';
private ?string $htmlElement = null;
private array $htmlAttributes = [];
private ?string $linkUrl = null;
private ?string $templatePath = null;
private ?string $crudActionName = null;
private ?string $routeName = null;
private $routeParameters = [];
/* @var callable|string|null */
private $url;
private array $translationParameters = [];
private $displayCallable;
public function getType(): string
{
return $this->type;
}
public function setType(string $type): void
{
$this->type = $type;
}
public function isEntityAction(): bool
{
return Action::TYPE_ENTITY === $this->type;
}
public function isGlobalAction(): bool
{
return Action::TYPE_GLOBAL === $this->type;
}
public function isBatchAction(): bool
{
return Action::TYPE_BATCH === $this->type;
}
public function getName(): string
{
return $this->name;
}
public function setName(string $name): void
{
$this->name = $name;
}
public function getLabel(): TranslatableInterface|string|false|null
{
return $this->label;
}
public function setLabel(TranslatableInterface|string|false|null $label): void
{
$this->label = $label;
}
public function getIcon(): ?string
{
return $this->icon;
}
public function setIcon(?string $icon): void
{
$this->icon = $icon;
}
public function getCssClass(): string
{
return trim($this->cssClass);
}
public function setCssClass(string $cssClass): void
{
$this->cssClass = $cssClass;
}
public function getAddedCssClass(): string
{
return trim($this->addedCssClass);
}
public function setAddedCssClass(string $cssClass): void
{
$this->addedCssClass .= ' '.$cssClass;
}
public function getHtmlElement(): string
{
return $this->htmlElement;
}
public function setHtmlElement(string $htmlElement): void
{
$this->htmlElement = $htmlElement;
}
public function getHtmlAttributes(): array
{
return $this->htmlAttributes;
}
public function addHtmlAttributes(array $htmlAttributes): void
{
$this->htmlAttributes = array_merge($this->htmlAttributes, $htmlAttributes);
}
public function setHtmlAttributes(array $htmlAttributes): void
{
$this->htmlAttributes = $htmlAttributes;
}
public function setHtmlAttribute(string $attributeName, string $attributeValue): void
{
$this->htmlAttributes[$attributeName] = $attributeValue;
}
public function getTemplatePath(): ?string
{
return $this->templatePath;
}
public function setTemplatePath(string $templatePath): void
{
$this->templatePath = $templatePath;
}
public function getLinkUrl(): string
{
return $this->linkUrl;
}
public function setLinkUrl(string $linkUrl): void
{
$this->linkUrl = $linkUrl;
}
public function getCrudActionName(): ?string
{
return $this->crudActionName;
}
public function setCrudActionName(string $crudActionName): void
{
$this->crudActionName = $crudActionName;
}
public function getRouteName(): ?string
{
return $this->routeName;
}
public function setRouteName(string $routeName): void
{
$this->routeName = $routeName;
}
/**
* @return array|callable
*/
public function getRouteParameters()/* : array|callable */
{
return $this->routeParameters;
}
/**
* @param array|callable $routeParameters
*/
public function setRouteParameters($routeParameters): void
{
if (!\is_array($routeParameters) && !\is_callable($routeParameters)) {
trigger_deprecation(
'easycorp/easyadmin-bundle',
'4.0.5',
'Argument "%s" for "%s" must be one of these types: %s. Passing type "%s" will cause an error in 5.0.0.',
'$routeParameters',
__METHOD__,
'"array" or "callable"',
\gettype($routeParameters)
);
}
$this->routeParameters = $routeParameters;
}
/**
* @return string|callable|null
*/
public function getUrl()
{
return $this->url;
}
/**
* @param string|callable $url
*/
public function setUrl($url): void
{
if (!\is_string($url) && !\is_callable($url)) {
trigger_deprecation(
'easycorp/easyadmin-bundle',
'4.0.5',
'Argument "%s" for "%s" must be one of these types: %s. Passing type "%s" will cause an error in 5.0.0.',
'$url',
__METHOD__,
'"string" or "callable"',
\gettype($url)
);
}
$this->url = $url;
}
public function getTranslationParameters(): array
{
return $this->translationParameters;
}
public function setTranslationParameters(array $translationParameters): void
{
$this->translationParameters = $translationParameters;
}
public function shouldBeDisplayedFor(EntityDto $entityDto): bool
{
trigger_deprecation(
'easycorp/easyadmin-bundle',
'4.9.4',
'The "%s" method is deprecated and it will be removed in 5.0.0 because it\'s been replaced by the method "isDisplayed()" of the same class.',
__METHOD__,
);
return $this->isDisplayed($entityDto);
}
public function isDisplayed(?EntityDto $entityDto = null): bool
{
return null === $this->displayCallable || (bool) \call_user_func($this->displayCallable, $entityDto?->getInstance());
}
public function setDisplayCallable(callable $displayCallable): void
{
$this->displayCallable = $displayCallable;
}
/**
* @internal
*/
public function getAsConfigObject(): Action
{
$action = Action::new($this->name, $this->label, $this->icon);
$action->setCssClass($this->cssClass);
$action->addCssClass($this->addedCssClass);
$action->setHtmlAttributes($this->htmlAttributes);
$action->setTranslationParameters($this->translationParameters);
if (null !== $this->templatePath) {
$action->setTemplatePath($this->templatePath);
}
if ($this->isGlobalAction()) {
$action->createAsGlobalAction();
} elseif ($this->isBatchAction()) {
$action->createAsBatchAction();
}
if ('a' === $this->htmlElement) {
$action->displayAsLink();
} else {
$action->displayAsButton();
}
if (null !== $this->crudActionName) {
$action->linkToCrudAction($this->crudActionName);
}
if (null !== $this->routeName) {
$action->linkToRoute($this->routeName, $this->routeParameters);
}
if (null !== $this->displayCallable) {
$action->displayIf($this->displayCallable);
}
return $action;
}
}