在Symfony2中我可以打電話給Symfony3的setAction在FormType
// MyController.php
$formType = new MyFormType($this->container);
$form = $this->createForm($formType);
// MyFormType.php
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setAction($this
->container
->get('router')
->generate('myAction')
);
// ...
}
}
在symfony3我應該通過string
到createForm
方法,所以我不能夠控制或路由器通過向MyFormType
我試着將FormType定義爲服務,但不會改變行爲。
如何設置MyFormType
(不在MyController
)中的操作?
顯示如何將表單類型定義爲服務。你應該可以在沒有問題的情況下注入路由器。 – Cerad
是的,我注入路由器沒有問題,但在我看來,symfony創建窗體類型爲「新的FormType」,根本不調用服務(當使用'createForm'方法時)。所以我在FormType中的構造函數被調用時沒有任何參數。 – Eddie
不是。如果您將表單類型正確定義爲服務,那麼createForm功能會將其從容器中拉出。仔細檢查你的工作。確保您的服務定義正在使用container:debug進行加載。我保證它會起作用。 – Cerad