karmis
@karmis

Как при объявление контроллера как сервиса вызвать метод не являющийся экшеном?

Как при объявление контроллера как сервиса вызвать метод не являющийся экшеном ?

Есть класс контроллера, обозначенный как сервис
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
//...

class MyServiceController extends Controller {
    /**
     *
     * @Route("/my/action", name="my_action")
     * @Method("POST")
     */
    public function myAction(Request $request)
    {
     // ...
    }

    protected function myMethod(Request $request)
    {
     // ...
    }
}


есть другой класс контроллера, перегружающий метод myMethod родительского класса сервиса

namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
//...
class MyOtherServiceController extends MyServiceController {
    /**
     *
     * @Route("/my/other/action", name="my_other_action")
     * @Method("POST")
     */
    public function myAction(Request $request)
    {
        // ... 
    }

    protected function myMethod(Request $request)
    {
     // ...
    }
}


и есть сам контроллер, который вызывает сервис

namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
//...
class MyController extends Controller {
    /**
     * @Route("/my/controller", name="my_controller")
     * @Method("POST")
     */
    public function serviceAction(Request $request)
    {
         // Срабатывает успешно. 
         $this->forward('app.service.myAction', array(
                'request' => $request,
            ));

         // не срабатывает 
         $this->forward('app.service.myMethod', array(
                'request' => $request,
            ));
    }
}


services.yml
app.service:
        class: AppBundle\Controller\MyOtherServiceController
        arguments: []


Заранее спасибо
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
protected если на public поменять - будет работать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы