列表视图中的自定义内联编辑
Custom inline edit in list view
我有一个代表实体当前状态的数据库字段。此字段与实体本身位于同一 table 中。
这些州是
0 = unchecked
1 = ok
2 = not okay
目前我用一个选择字段表示这个字段
->add('status', 'choice',
array('choices' => ['unverified', 'OK', 'Critical'],
'editable' => true);
为了更好的工作流程,我不想呈现选择输入字段,导致当列表视图中有数百个实体时,点击 3 次为一个实体设置状态非常慢。
相反,我想将 2 个图像显示为按钮:一个拇指向下表示 "not okay" 的按钮,一个拇指向上表示 "ok" 的按钮,如果未选中任何内容:未验证。只能检查两者之一或 none 图片
我该怎么做?有人做过类似的事情吗?也许选择字段有一个 "expanded" 选项?
这是解决您的问题的可能方法
为您的管理员设置自定义控制器 class 并让它扩展 CRUDController class。
使用类似 "updateStatusAction" 的方法扩展此自定义控制器 class,您更新实体状态的逻辑将在此处
通过覆盖 configureRoutes 方法在管理 class 中添加路由 -> 添加与您的 updateStatusAction 方法匹配的路由
为您的列表操作设置自定义模板。扩展 base_list.html.twig 并仅覆盖 javascripts 块。一般来说,除了添加用于稍后处理可点击元素的 ajax 代码外,不要更改任何内容。
在列表操作中为您想要的字段设置自定义模板(在您的示例中为 "status" 字段)并放置 2 links(或使用 buttons/images 如果你喜欢的话),并使用 path() 方法为他们提供你的自定义控制器方法 (updateStatusAction) 的路径。
现在您的列表视图的每一行都有 2 个元素 (links/images/buttons),当您单击它时,ajax 代码(在您的 list_view 模板中定义)将处理对自定义控制器的调用。您在此处的逻辑将通过从 link 获取 ID 和状态来处理状态更新。它会处理一些实体处理内容和 returns 您实体的当前状态。例如,您可以通过为您单击的 link 的背景着色来显示此当前状态。
我不知道这是否是最佳方法,但这是我会考虑的解决方案。
我有一个代表实体当前状态的数据库字段。此字段与实体本身位于同一 table 中。
这些州是
0 = unchecked
1 = ok
2 = not okay
目前我用一个选择字段表示这个字段
->add('status', 'choice',
array('choices' => ['unverified', 'OK', 'Critical'],
'editable' => true);
为了更好的工作流程,我不想呈现选择输入字段,导致当列表视图中有数百个实体时,点击 3 次为一个实体设置状态非常慢。
相反,我想将 2 个图像显示为按钮:一个拇指向下表示 "not okay" 的按钮,一个拇指向上表示 "ok" 的按钮,如果未选中任何内容:未验证。只能检查两者之一或 none 图片
我该怎么做?有人做过类似的事情吗?也许选择字段有一个 "expanded" 选项?
这是解决您的问题的可能方法
为您的管理员设置自定义控制器 class 并让它扩展 CRUDController class。
使用类似 "updateStatusAction" 的方法扩展此自定义控制器 class,您更新实体状态的逻辑将在此处
通过覆盖 configureRoutes 方法在管理 class 中添加路由 -> 添加与您的 updateStatusAction 方法匹配的路由
为您的列表操作设置自定义模板。扩展 base_list.html.twig 并仅覆盖 javascripts 块。一般来说,除了添加用于稍后处理可点击元素的 ajax 代码外,不要更改任何内容。
在列表操作中为您想要的字段设置自定义模板(在您的示例中为 "status" 字段)并放置 2 links(或使用 buttons/images 如果你喜欢的话),并使用 path() 方法为他们提供你的自定义控制器方法 (updateStatusAction) 的路径。
现在您的列表视图的每一行都有 2 个元素 (links/images/buttons),当您单击它时,ajax 代码(在您的 list_view 模板中定义)将处理对自定义控制器的调用。您在此处的逻辑将通过从 link 获取 ID 和状态来处理状态更新。它会处理一些实体处理内容和 returns 您实体的当前状态。例如,您可以通过为您单击的 link 的背景着色来显示此当前状态。
我不知道这是否是最佳方法,但这是我会考虑的解决方案。