奏鸣曲块 - 传递自定义参数

Sonata Block - Pass custom arguments

我是 Sonata Block Bundle 的新手。 我想在我的块中放入一张地图。它使用一些 JS 库。上下文的功能,我需要传递不同的高度、宽度等……例如。 但是不知道合不合我的需求

起初,我想使用 Sonata Block,因为我的地图与某些服务存在依赖关系。所以这很酷,我可以将它们集中起来。

但是我可以将一些参数函数传递给调用我的块的父函数吗?

感谢您的回答。

红雾

好吧,如果我理解你的问题,你想做的是将一些自定义参数从你的模板(你称之为块的地方)传递到 php class正在执行块。让我们开始吧:

让我们添加选项来传递高度属性:

{% sample render of your block %}
{{ sonata_block_render({'type':'your.block.id'}, {'height': 50}) }}

现在,在您的块服务中 (php/class)。您必须在方法中将此属性添加为默认选项:setDefaultSettings,如下所示:

public function setDefaultSettings(OptionsResolverInterface $resolver) {
    $resolver->setDefaults(array(
        // your options goes here, and we add our new option right after them
        'height' => null // or whatever suits your needs
    ));
}

最后,您所要做的就是从 execute 方法访问您的选项,如下所示:

public function execute(BlockContextInterface $blockContext, Response $response = null) {
    $settings = $blockContext->getSettings();
    // now your value can be access from $settings['height'];
}

如果这就是您要找的,请告诉我。