コントローラーでデータグリッドを取得する必要がありますが、関数にパラメーターを入力することはできません。あなたはその情報をどのように回復しますか?symfonyのSonata Admin Bundleを使ったバッチアクション
services:
admin.category:
class: AppBundle\Admin\CategoryAdmin
arguments: [~, AppBundle\Entity\Category, AppBundle:CRUDCategory, ~]
tags:
- { name: sonata.admin, manager_type: orm, group: "General", label: Categories }
これは、コントローラ
<?php
namespace AppBundle\Controller;
use Sonata\AdminBundle\Controller\CRUDController as SonataController;
use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery as ProxyQueryInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
class CRUDCategoryController extends SonataController {
/**
* @param ProxyQueryInterface $selectedModelQuery
* @param Request $request
*
* @return RedirectResponse
*/
public function batchActionInactive(ProxyQueryInterface $selectedModelQuery, Request $request) {
$em = $this->getDoctrine()->getManager();
$category = $em->getRepository('AppBundle:Category')->find($request->getId());
$category->setState('INACTIVE');
$em->flush();
return new RedirectResponse(
$this->admin->generateUrl('list', $this->admin->getFilterParameters())
);
}
}
であり、これはエラーが
Catchable Fatal Error: Argument 2 passed to AppBundle\Controller\CRUDCategoryController::batchActionInactive() must be an instance of AppBundle\Controller\Request, none given
おかげで、私はライン 'symfonyの\コンポーネント\ HttpFoundation \要求を使用するを追加しました;'しかし、問題は続く – Dasaaf
私の編集を参照してください、あなたは正しい場所に "行動"を入れていませんでした – greg0ire
私はこのドキュメント[リンク](https://sonata-project.org/bundles/admin/master/doc/reference/ batch_actions.html#)symfonyはあなたが言及したように処理されましたが、Sonataは 'batchActionInactive'で行います – Dasaaf