Sulu CMF - 关联实体的过滤单个自动完成选择

IT技术 reactjs symfony fosrestbundle sulu
2021-05-01 11:25:57

我有两个实体:

class DataSet {
  string $name;
  Collection $groups; // List<DataGroup>
}
class DataGroup {
  string $name;
  DataSet $set;
  DataGroup $nextGroup;
}

DataSet根据docs为 sCRUD 操作创建了一些基本的管理 UI 扩展现在我还想对DataGroupa的关联s执行 CRUD 操作DataSet为此,我首先查看了ContactBundle Javascript 扩展CardCollection为该$groups字段注册了一个,它带有一个覆盖表单(提供表单模式等)。

DataGroup::nextGroup应该是任何其他 DataGroup实体共享相同DataSet如何为 .a 中的组件提供所有匹配的实体SingleAutoComplete

更新 2021-09-09

我转而采用预期的配置方式实现方法。

我还提出了一个后续问题来缩小我的确切问题。

1个回答

我认为这个问题的答案与您的另一个问题(Sulu CMF - CRUD Filtered Multi-Item-Selection for association entity非常相似听起来您想为DataGroup实体实现选择正如您的其他问题答案中已经包含的那样Sulu WorkshopSulu Demo都包含如何执行此操作的代码示例。

您可以通过SuluAdminBundle使用以下命令打印 的配置参考来检查您选择字段类型的所有可用配置选项

bin/console config:dump-reference sulu_admin

Sulu 使用相同的机制为内置实体(如contact_selection或 )注册选择字段类型single_account_selection这意味着您的自定义选择字段类型支持内置字段类型支持的相同参数,可以在 Sulu 文档中找到

例如,如果您想在加载可选项目时添加一个发送到服务器的request_parameters参数,您可以resource_store_properties_to_request在表单配置中使用param 或param 。一个例子可能是这样的:

<property name="custom_selection" type="custom_selection">
    <params>
        <param name="request_parameters" type="collection">
            <param name="static-parameter" value="static-value" />
        </param>
        <param name="resource_store_properties_to_request" type="collection">
            <param name="dynamic-parameter" value="other-property-name" />
        </param>
    </params>
</property>

此选择字段类型将使用配置的资源键列表路由来加载可选项目。要真正过滤可选项目,您需要在列表路由的控制器中处理选择字段类型发送的参数。如果您ListBuilder在此控制器中使用 Sulu服务,过滤可能如下所示:

$filterValue = $request->query->get('static-parameter');
$listBuilder->where($fieldDescriptors['filtered-property-name'], $filterValue);