在sonata admin中扩展CRUD控制器以及PHP严格标准的问题

问题描述 投票:1回答:1

我正在使用最新的(dev-master)奏鸣曲管理员,我想为sonata admin创建我自己的createAction()方法。我必须这样做,因为我想在添加到数据库时保存一些用户信息。

我的自定义控制器是 - S \ CoreBundle \ Controller \ NewsAdminConroller.php

<?php
namespace S\CoreBundle\Controller;
use Sonata\AdminBundle\Controller\CRUDController as Controller;
use Symfony\Component\Security\Core\SecurityContextInterface;


class NewsAdminController extends Controller
{
    /**
    * Set the system user ID
    */
    private function updateFields($object)
    {
        //some code - this is my own method
    }

    public function createAction(Request $request = null)
    {
        //code for create ... it's almost the same as default code. 
    }
}

默认CRUD - Sonata \ AdminBundle \ Controller \ CRUDController.php:

class CRUDController extends Controller
{
    public function createAction(Request $request = null)
    {
         //...
    }
}

两个createAction()方法都有完全相同的参数,名称......

它给我一个错误:

PHP严格标准:声明S \ CoreBundle \ Controller \ NewsAdminController :: createAction()应与/ home / mark中的Sonata \ AdminBundle \ Controller \ CRUDController :: createAction(Symfony \ Component \ HttpFoundation \ Request $ request = NULL)兼容第129行的/dev/project/src/S/CoreBundle/Controller/NewsAdminController.php

php symfony inheritance sonata-admin standards-compliance
1个回答
2
投票

Sonata\AdminBundle\Controller\CRUDController::createAction(Symfony\Component\HttpFoundation\Request $request = NULL)

需要一个Request Object,但如果你不宣布它,它指向S\CoreBundle\Controller\Request

只需在文件顶部添加"use Symfony\Component\HttpFoundation\Request;"即可。

Update

自提交https://github.com/sonata-project/SonataAdminBundle/commit/49557c302346f57d962b83b31e2931446ff60e9c以来,不需要将请求设置为参数。

仅创建Action

Sonata\AdminBundle\Controller\CRUDController::createAction()

© www.soinside.com 2019 - 2024. All rights reserved.