如何增强 Drupal 8 Views 批量操作确认页面?
How can I enhance a Drupal 8 Views Bulk Operations Confirm Page?
对于自定义 Views Views Bulk Operations 操作,我想在确认页面上增强列表中的信息,例如,而不是:
- 姓 1
- 姓 2
我想要:
- 姓氏 1、名字、前缀
- LastName2, FirstName, Prefix
最好在哪里修改它?
在 Drupal 8 中基本上有两种方法可以做到这一点:
- 使用
hook_form_views_bulk_operations_confirm_action_alter
。这将允许您更改列表,例如使用自定义值和代码。
- 如果您已经定义了自定义操作插件,那么在插件注释中您可以将路由名称声明为自定义验证表单。这将允许您做任何您想做的事情,包括多步骤表单。当您定义该自定义表单时,您应该 subclass Drupal\views_bulk_operations\Form\ConfirmAction,因为它的 buildForm 方法采用常规表单参数之外的参数。所以你的插件会像这样开始:
/**
* Action description.
*
* @Action(
* id = "my_special_action",
* label = @Translation("My Special Action"),
* type = "custom_entity",
* confirm_form_route_name = "my_module.my_special_action_confirm_form",
* )
*/
class MySpecialAction extends ViewsBulkOperationsActionBase {
}
表格将如下所示:
use Drupal\views_bulk_operations\Form\ConfirmAction;
class MySpecialActionConfirmForm extends ConfirmAction {
public function getFormId() {
return 'my_special_action_confirm_form';
}
public function buildForm(array $form, FormStateInterface $form_state, $view_id = NULL, $display_id = NULL) {
....
}
在自定义表单 class 中,如果您想将任何特殊内容传递给自定义操作,则必须定义自己的 submitForm 方法。
对于自定义 Views Views Bulk Operations 操作,我想在确认页面上增强列表中的信息,例如,而不是:
- 姓 1
- 姓 2
我想要:
- 姓氏 1、名字、前缀
- LastName2, FirstName, Prefix
最好在哪里修改它?
在 Drupal 8 中基本上有两种方法可以做到这一点:
- 使用
hook_form_views_bulk_operations_confirm_action_alter
。这将允许您更改列表,例如使用自定义值和代码。 - 如果您已经定义了自定义操作插件,那么在插件注释中您可以将路由名称声明为自定义验证表单。这将允许您做任何您想做的事情,包括多步骤表单。当您定义该自定义表单时,您应该 subclass Drupal\views_bulk_operations\Form\ConfirmAction,因为它的 buildForm 方法采用常规表单参数之外的参数。所以你的插件会像这样开始:
/**
* Action description.
*
* @Action(
* id = "my_special_action",
* label = @Translation("My Special Action"),
* type = "custom_entity",
* confirm_form_route_name = "my_module.my_special_action_confirm_form",
* )
*/
class MySpecialAction extends ViewsBulkOperationsActionBase {
}
表格将如下所示:
use Drupal\views_bulk_operations\Form\ConfirmAction;
class MySpecialActionConfirmForm extends ConfirmAction {
public function getFormId() {
return 'my_special_action_confirm_form';
}
public function buildForm(array $form, FormStateInterface $form_state, $view_id = NULL, $display_id = NULL) {
....
}
在自定义表单 class 中,如果您想将任何特殊内容传递给自定义操作,则必须定义自己的 submitForm 方法。