本地Drupal站点使用了Views Bulk Operations(批量操作模块)实现某批量操作。在升级到10.3版本之前(10.2)批量提交的时候会有一个确认页面,但是升级之后没有经过确认页面,而是直接提交。
升级前的自定义批量操作类 注释:
升级之后确认页面不生效,排查了一番没找到原因,不过找到了解决方法:
因为我只是单纯的需要一个确认页面,并不需要自定义确认页面,所以直接使用Views Bulk Operations的确认页面,只需要修改注释中的 confirm = TRUE,
/**
* Migrate entity action with default confirmation form.
*
* @Action(
* id = "views_bulk_operations_xxx",
* label = @Translation("xxx"),
* type = "",
* confirm_form_route_name = "views_bulk_operations.confirm",
* )
*/
如果需要自定义确认页面,那么就需要自定义确认表单了。
1、使用hook_form_views_bulk_operations_confirm_action_alter。直接修改默认的列表。
2、自定义一个ConfirmForm,再修改confirm = TRUE,
插件注释修改:
/**
* 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) {
....
}