OroCRM自定义批量操作模态框不显示问题求助
OroCRM批量修改归属人模态框不显示排查
我正在对OroCRM进行定制开发,需要实现多条记录的批量操作:选中批量操作选项后弹出模态框以选择系统归属人。已完成以下配置,但选中选项后模态框并未显示,求排查原因:
1. 数据网格中添加mass-actions配置
change_owner: type: lead_change_owner_mass_edit handler: pb_lead.mass_action.change_owner.handler acl_resource: oro_sales_lead_update route: pb_lead_datagrid_mass_action_change_owner label: pb.lead.mass_actions.change_owner.label icon: user data_identifier: lead.id frontend_options: title: "@translator->trans(pb.lead.mass_actions.change_owner.label)" dialogOptions: width: 500 modal: true allowMaximize: false allowMinimize: false
2. 定义并注册Action类
Action类代码:
class ChangeOwnerAction extends WindowMassAction { /** @var array */ protected $requiredOptions = ['handler', 'route', 'data_identifier']; /** * {@inheritDoc} */ public function setOptions(ActionConfiguration $options) { if (empty($options['frontend_type'])) { $options['frontend_type'] = 'edit-mass'; } return parent::setOptions($options); } /** * {@inheritdoc} */ protected function getAllowedRequestTypes() { return [Request::METHOD_POST]; } }
服务注册配置:
services: #Change owner windows action pb_lead.mass_action.type.changeownermass: class: PB\Bundle\LeadBundle\Datagrid\Extension\MassAction\Actions\Widget\ChangeOwnerAction shared: false tags: - { name: oro_datagrid.extension.mass_action.type, type: lead_change_owner_mass_edit }
3. 编写路由控制器方法及注册服务
控制器方法:
/** * @Route("/change-owner-mass-edit-lead", name="pb_lead_datagrid_mass_action_change_owner") * @AclAncestor("oro_sales_lead_update") * @Template("@PBLead/Lead/widget/mass_change_owner_update.html.twig") * @param Request $request * @return array */ public function massChangeOwnerAction(Request $request) { dump($request); $responseData = [ 'inset' => $request->get('inset', null), 'values' => $request->get('values', null), ]; ... return $responseData; }
控制器服务注册:
PB\Bundle\LeadBundle\Controller\Frontend\LeadChangeOwnerController: calls: - [setContainer, ['@Psr\Container\ContainerInterface']] tags: - { name: container.service_subscriber }
4. 定义批量操作处理类及服务
#Abstract Lead mass action handler pb_lead.abstract_lead_mass_action_handler: class: PB\Bundle\LeadBundle\Datagrid\Extension\MassAction\AbstractLeadMassActionHandler abstract: true arguments: - '@oro_entity.doctrine_helper' - '@oro_security.acl_helper' #Lead change owner mass action HANDLER pb_lead.mass_action.change_owner.handler: parent: pb_lead.abstract_lead_mass_action_handler public: true class: PB\Bundle\LeadBundle\Datagrid\Extension\MassActionxzczxcz\LeadChangeOwnerMassActionHandler calls: - ['setTranslator', ['@translator']] - ['setFormFactory', ['@form.factory']]
5. 创建自定义表单类及视图模板
表单类代码:
class LeadChangeOwnerMassType extends AbstractType { const NAME = 'pb_lead_change_owner_mass_type'; /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add( 'owner', UserAclSelectType::class, [ 'required' => true, 'label' => 'pb.lead.mass_actions.change_owner.label', 'constraints' => [ new NotNull() ] ] ); } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Lead::class, ]); } }
视图模板代码:
{% extends '@OroAction/Operation/form.html.twig' %} {% set formAction = path('pb_lead_datagrid_mass_action_change_owner', {gridName: 'sales-lead-grid', actionName: 'change_owner', inset: inset, values: values }) %} {% block form %} <form id="{{ form.vars.id }}" name="{{ form.vars.name }}" action="{{ formAction }}" method="{{ form.vars.method }}" class="form-dialog" > <fieldset class="form-horizontal"> {{ form_row(form) }} </fieldset> <div class="hidden"> {{ form_rest(form) }} </div> <div class="widget-actions"> <button class="btn" type="reset">{{ 'Cancel'|trans }}</button> <button class="btn btn-success" type="submit">{{ 'Apply'|trans }}</button> </div> </form> {{ oro_form_js_validation(form) }} {% endblock %}
内容的提问来源于stack exchange,提问作者Tony Díaz Ramos
相关产品推荐
相关产品推荐

