Как выбрать объекты по ссылке из блочного сервиса SonataBlockBundle

Я создаю функцию для приложения, которое использует Symfony 3.3 и SonataBlockBundle. Я создал ImageBlockService, который позволяет передавать изображения на внешний интерфейс. Прямо сейчас, функция execute () в этом сервисе выглядит следующим образом …

public function execute(BlockContextInterface $blockContext, Response $response = null)
{
//Content in each block should match the name of an image already uploaded to the page.
//So, for example, it should be something like sample-image.jpg
$settings = $blockContext->getSettings();
$settings['image'] = [];
$page = $blockContext->getBlock()->getPage();
foreach ($page->getImages() as $key => $image) {
if ($image->getName() === trim($settings['content'])) {
$settings['image']['name'] = $image->getName();
$settings['image']['url'] = $this->imageProvider->generatePublicUrl($image, 'reference');
}
}
if (empty($settings['image'])) {
//This block's content did not contain a correct reference to an uploaded image name.
throw new \Exception('No valid image provided in at least one image block');
}
return $this->renderResponse($blockContext->getTemplate(), array(
'block' => $blockContext->getBlock(),
'settings' => $settings,
), $response);
}

… и мой метод buildEditForm () выглядит следующим образом …

public function buildEditForm(FormMapper $formMapper, BlockInterface $block)
{
$formMapper->add('settings', 'sonata_type_immutable_array', array(
'keys' => array(
array('content', 'textarea', array()),
),
));
}

… позволяя пользователям CMS вводить имя уже загруженного изображения и получать доступ к изображению на внешнем интерфейсе.

Это кажется плохим способом сделать это с большой вероятностью ошибки пользователя.

Есть ли простой способ позволить блочной службе отображать выпадающий или модальный блок выбора, показывающий доступные сущности для данного типа сущностей? Это кажется мне менее подверженным ошибкам способом ведения дел.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector