Symfony\Component\HttpKernel\HttpKernel
オブジェクトにはメソッドがありませんforward
。これ
は、このエラーが発生する理由です。
補足として、コンストラクターに対して計算を行うべきではありません。直後に呼び出されるメソッドを作成することをお勧めします。Symfony\Bundle\FrameworkBundle\Controller\Controller
process
これを行う別の方法を次に示します。
services.yml
services:
my.service:
class: MyProject\MyBundle\MyService
scope: request
arguments:
- @http_kernel
- @request
calls:
- [ handleForward, [] ]
注:オブジェクトにサービスを提供scope: request
するための必須パラメーターです。@request
MyProject\MyBundle\MyService
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpFoundation\Request;
class MyService
{
protected $request;
protected $kernel;
public function __construct(HttpKernelInterface $kernel, Request $request)
{
$this->kernel = $kernel;
$this->request = $request;
}
public function handleForward()
{
$controller = 'AcmeHelloBundle:Hello:fancy';
$path = array(
'name' => $name,
'color' => 'green',
'_controller' => $controller
);
$subRequest = $this->request->duplicate(array(), null, $path);
$response = $this->kernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST);
}
}