This topic contains 2 replies, has 2 voices, and was last updated by zhex900 6 years, 8 months ago.
- Topic
Hi,
I am trying to implement a custom mass action. I used this thread thread as a guide.
Have this javascript error:
1234567891011model-action.js?version=73e11951:42 Uncaught TypeError: "model" is requiredat child.initialize (model-action.js?version=73e11951:42)at child.Backbone.View (backbone.js?version=73e11951:1192)at child.Backbone.View (backbone.js?version=73e11951:13)at child [as constructor] (backbone.js?version=73e11951:1852)at child [as constructor] (backbone.js?version=73e11951:1852)at child [as constructor] (backbone.js?version=73e11951:1852)at new child (backbone.js?version=73e11951:1852)at action-header-cell.js?version=73e11951:70at Function._.each._.forEach (underscore.js?version=73e11951:153)at Backbone.Collection.each (backbone.js?version=73e11951:87)My code are here:
To install the code. I run
php app/console cache:clear –env=dev -vvv
php app/console assets:install
php app/console assetic:dump
php app/console oro:requirejs:build1.assetic.yml
123#CampusCRM/CampusContactBundle/Resources/config/oro/assetic.ymlbundles:- CampusContactBundle2. actions.yml
1234567#CampusCRM/CampusContactBundle/Resources/config/actions.ymlservices:oro_contact.mass_action.autoallocate:class: CampusCRM\CampusContactBundle\Datagrid\Extension\MassAction\AutoAllocateMassActionscope: prototypetags:- { name: oro_datagrid.extension.mass_action.type, type: autoallocate }3. requirejs.yml
1234#CampusCRM/CampusContactBundle/Resources/config/requirejs.ymlconfig:paths:'oro/datagrid/action/autoallocate-action': 'bundles/campuscontact/js/datagrid/action/autoallocate-action.js'4. autoallocate-action.js
123456789101112131415161718192021222324252627282930/*global define*///CampusCRM/CampusContactBundle/Resources/public/js/datagrid/action/autoallocate-action.jsdefine(['oro/datagrid/action/model-action'], function (ModelAction) {'use strict';var AutoallocateAction;/*** TEST123** @export oro/datagrid/action/autoallocate-Action* @class oro.datagrid.action.AutoallocateAction* @extends oro.datagrid.action.ModelAction*/AutoallocateAction = ModelAction.extend({defaultMessages: {confirm_title: 'Execution TEST123',confirm_content: 'Are you sure you want to do TEST123?',confirm_ok: 'Yes, do it',confirm_cancel: 'Cancel',success: 'Action performed.',error: 'Action is not performed.',empty_selection: 'Please, select item to perform action.'}});return AutoallocateAction;});5. AutoAllocateMassAction.php
1234567891011121314151617181920212223242526272829<?php/*** Created by PhpStorm.* User: jake* Date: 11/8/17* Time: 10:31 AM*///CampusCRM/CampusContactBundle/Datagrid/Extension/MassAction/AutoAllocateMassAction.phpnamespace CampusCRM\CampusContactBundle\Datagrid\Extension\MassAction;use Oro\Bundle\DataGridBundle\Extension\Action\ActionConfiguration;use Oro\Bundle\DataGridBundle\Extension\MassAction\Actions\Ajax\AjaxMassAction;class AutoAllocateMassAction extends AjaxMassAction{public function setOptions(ActionConfiguration $options){if (empty($options['handler'])) {$options['handler'] = 'oro_contact.mass_action.handler.autoallocate';}if (empty($options['frontend_type'])) {$options['frontend_type'] = 'autoallocate';}return parent::setOptions($options);}}6. AutoAllocateActionHandler.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192<?phpnamespace CampusCRM\CampusContactBundle\Datagrid\Extension\MassAction;use Doctrine\Common\Persistence\ManagerRegistry;use Oro\Bundle\DataGridBundle\Extension\MassAction\MassActionHandlerArgs;use Oro\Bundle\DataGridBundle\Extension\MassAction\MassActionHandlerInterface;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;use Symfony\Component\Translation\TranslatorInterface;use Oro\Component\MessageQueue\Client\MessageProducerInterface;use Oro\Bundle\DataGridBundle\Extension\MassAction\Actions\Ajax\MassDelete\MassDeleteLimiter;use Oro\Bundle\PlatformBundle\Manager\OptionalListenerManager;//CampusCRM/CampusContactBundle/Datagrid/Extension/MassAction/AutoAllocateActionHandler.phpclass AutoAllocateActionHandler implements MassActionHandlerInterface{const FLUSH_BATCH_SIZE = 100;/** @var ManagerRegistry */protected $registry;/** @var TranslatorInterface */protected $translator;/** @var AuthorizationCheckerInterface */protected $authorizationChecker;/** @var MassDeleteLimiter */protected $limiter;/** @var RequestStack */protected $requestStack;/** @var OptionalListenerManager */protected $listenerManager;/** @var MessageProducerInterface */protected $producer;/** @var string */protected $responseMessage = 'oro.grid.mass_action.delete.success_message';/*** @param ManagerRegistry $registry* @param TranslatorInterface $translator* @param AuthorizationCheckerInterface $authorizationChecker* @param MassDeleteLimiter $limiter* @param RequestStack $requestStack* @param OptionalListenerManager $listenerManager* @param MessageProducerInterface $producer*/public function __construct(ManagerRegistry $registry,TranslatorInterface $translator,AuthorizationCheckerInterface $authorizationChecker,MassDeleteLimiter $limiter,RequestStack $requestStack,OptionalListenerManager $listenerManager,MessageProducerInterface $producer) {$this->registry = $registry;$this->translator = $translator;$this->authorizationChecker = $authorizationChecker;$this->limiter = $limiter;$this->requestStack = $requestStack;$this->listenerManager = $listenerManager;$this->producer = $producer;}/*** {@inheritDoc}*/public function handle(MassActionHandlerArgs $args){$limitResult = $this->limiter->getLimitResult($args);$method = $this->requestStack->getMasterRequest()->getMethod();if ($method === 'POST') {$result = $method; //$this->getPostResponse($limitResult);} elseif ($method === 'DELETE') {$this->limiter->limitQuery($limitResult, $args);$result = $method; //$this->doDelete($args);} else {$result = $method; //$this->getNotSupportedResponse($method);}file_put_contents('/tmp/massaction.log','handler'. PHP_EOL, FILE_APPEND);return $result;}}7. services.yml
1234567891011services:oro_contact.mass_action.handler.autoallocate:class: CampusCRM\CampusContactBundle\Datagrid\Extension\MassAction\AutoAllocateActionHandlerarguments:- '@doctrine'- '@translator'- '@security.authorization_checker'- '@oro_datagrid.extension.mass_action.actions.ajax.mass_delete_limiter'- '@request_stack'- '@oro_platform.optional_listeners.manager'- '@oro_message_queue.client.message_producer'8. datagrids.yml
1234567891011mass_actions:merge:type: mergeentity_name: %oro_contact.entity.class%data_identifier: c.idautoallocate:type: autoallocateentity_name: %oro_contact.entity.class%data_identifier: c.idicon: wrenchlabel: oro.contact.gridview.autoallocate.label
The forum ‘OroCRM – How do I? Questions’ is closed to new topics and replies.