От новичка до гуру: Курсы программирования на CyberDuff

расширение CRUD-контроллера в админке сонаты и проблемы со стандартами PHP Strict

Я использую последний (dev-master) администратор сонаты и хочу создать свой собственный метод 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() должно быть совместимо с Sonata\AdminBundle\Controller\CRUDController::createAction(Symfony\Component\HttpFoundation\Request $request = NULL) в /home/mark /dev/project/src/S/CoreBundle/Controller/NewsAdminController.php в строке 129


  • Можете ли вы включить use Symfony\Component\HttpFoundation\Request; в вашем контроллере? 16.03.2015
  • Я согласен с @YenneInfo - похоже, вам может понадобиться добавить оператор use для запроса - вероятно, PHP предполагает, что он из того же пространства имен, что и ваш CRUDController, и поэтому объявление вашей функции несовместимо с Sonata. 16.03.2015
  • Спасибо. В этом была хитрость. Вы можете опубликовать ответ, и я приму его. 16.03.2015

Ответы:


1

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

Требуется Request Object, но если вы его не объявите, он будет указывать на S\CoreBundle\Controller\Request

Просто добавьте "use Symfony\Component\HttpFoundation\Request;" в начало файла.

Обновлять

Поскольку фиксации https://github.com/sonata-project/SonataAdminBundle/commit/49557c302346f57d962b83b31e2931446ff60e9c нет необходимости устанавливать запрос в качестве параметра.

Действие создания только

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

17.03.2015
  • Это не сработало для меня. Warning: Declaration of App\Controller\DenunciaAdminController::createAction(Symfony\Component\HttpFoundation\Request $request) should be compatible with Sonata\AdminBundle\Controller\CRUDController::createAction() 17.04.2019
  • @laviku Да, этому ответу три года, и с тех пор код изменился, вам больше не нужно задавать запрос в параметрах, я обновляю свой ответ ... (Вот коммит github.com/sonata-project/SonataAdminBundle/commit/) 17.04.2019
  • Новые материалы

    Представляем Narwhal Technologies (Nrwl)
    6 декабря 2016 г. Маунтин-Вью, Калифорния С тех пор, как Виктор Савкин и я (Джефф Кросс) присоединились к команде Angular в Google на заре Angular 1, Angular продемонстрировал феноменальный..

    Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
    Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

    5 простых концепций Python, ставших сложными
    #заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

    «Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
    Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..