Php 在sonata admin上创建批处理操作

Php 在sonata admin上创建批处理操作,php,symfony,sonata-admin,Php,Symfony,Sonata Admin,我正在尝试在Sonata admin上添加新的批处理操作。但当我在我的项目中实施示例时,它会说: 注意:未定义索引:translation\u domain 如何解决 一些代码片段: AdminClass.php <?php use Sonata\AdminBundle\Admin\Admin; class AdminClass extends Admin { //Other variables, functions public function getBatchAct

我正在尝试在Sonata admin上添加新的批处理操作。但当我在我的项目中实施示例时,它会说:

注意:未定义索引:translation\u domain

如何解决

一些代码片段:

AdminClass.php

<?php
use Sonata\AdminBundle\Admin\Admin;

class AdminClass extends Admin {
    //Other variables, functions
    public function getBatchActions() {
        // retrieve the default batch actions (currently only delete)
        $actions = parent::getBatchActions();
        if (
          $this->hasRoute('edit') && $this->isGranted('EDIT') &&
          $this->hasRoute('delete') && $this->isGranted('DELETE')
        ) {
            $actions['merge'] = array(
                'label' => 'Мэйл илгээх',
                'ask_confirmation' => true
            );

        }

        return $actions;
    }

    /*protected function configureRoutes(RouteCollection $collection) {
        $collection->add('sendAction');
        $collection->add('send-mail', $this->getRouterIdParameter().'/send-mail');
    }*/
}
public function getNewInstance() {
    $instance = parent::getNewInstance();
    $mailadds = $this->getRequest()->query->get('mails');
    foreach ($mailadds as $mailadd) {
        $instance->addRecipient($mailadd);
    }

    return $instance;
}
protected function configureFormFields(FormMapper $formMapper) {
        $formMapper
          ->add('recipients', 'sonata_type_model', array('label' => 'Хүлээн авагчид', 'multiple' => true, 'by_reference' => false)
...
}
AdminClass.php

<?php
use Sonata\AdminBundle\Admin\Admin;

class AdminClass extends Admin {
    //Other variables, functions
    public function getBatchActions() {
        // retrieve the default batch actions (currently only delete)
        $actions = parent::getBatchActions();
        if (
          $this->hasRoute('edit') && $this->isGranted('EDIT') &&
          $this->hasRoute('delete') && $this->isGranted('DELETE')
        ) {
            $actions['merge'] = array(
                'label' => 'Мэйл илгээх',
                'ask_confirmation' => true
            );

        }

        return $actions;
    }

    /*protected function configureRoutes(RouteCollection $collection) {
        $collection->add('sendAction');
        $collection->add('send-mail', $this->getRouterIdParameter().'/send-mail');
    }*/
}
public function getNewInstance() {
    $instance = parent::getNewInstance();
    $mailadds = $this->getRequest()->query->get('mails');
    foreach ($mailadds as $mailadd) {
        $instance->addRecipient($mailadd);
    }

    return $instance;
}
protected function configureFormFields(FormMapper $formMapper) {
        $formMapper
          ->add('recipients', 'sonata_type_model', array('label' => 'Хүлээн авагчид', 'multiple' => true, 'by_reference' => false)
...
}
注意:收件人是多个字段


根据我的意见,问题应通过第420行的以下代码解决:

$translationDomain = isset($batchActions[$action]['translation_domain']) ? $batchActions[$action]['translation_domain'] : $this->admin->getTranslationDomain();

出现此问题是因为您没有检查数组$batchActions[$action]中是否存在键“translation\u domain”。据我所知,三元运算符“?”尝试将值应用于变量,如果在操作后未设置值,则尝试第二个运算符。因此,为什么我认为isset应该修复它。

还要添加一些代码。简单地说-在试图获取“translation_domain”的数组中,该键不存在。在使用isset之前,请检查它。此错误发生在哪一页?尝试将错误处理设置为E_ALL,也许可以创建一个自定义的错误处理程序,您可以使用它获取发生错误的特定文件行。例如:
错误报告(E\u ALL);设置错误处理程序(“错误处理程序”,E_ALL);函数errorHandler($errno,$errstr,$err_file,$err_line,$err_context){echo“Error$errno,errstr-$errstr,err_file-$errfile,err_line-$err_line,context-$err_context);die();}
我发布的代码将打印出所有错误,这可能会让你更靠近。@Janno谢谢你的回答:)错误发生在
vendor/sonata project/admin bundle/Controller/CRUDController.php的第420行中
将该行更改为:
$translationDomain=isset($batchActions[$action]['translation\u domain'])?$batchActions[$action]['translation\u domain']:$this->admin->getTranslationDomain();