SoyutType tarafından geliştirilen bir FormType'dan bir hizmete erişmeye çalışıyorum. Bunu nasıl yapabilirim?Symfony FormType içindeki diğer hizmetlere nasıl erişilir?
Teşekkürler!
SoyutType tarafından geliştirilen bir FormType'dan bir hizmete erişmeye çalışıyorum. Bunu nasıl yapabilirim?Symfony FormType içindeki diğer hizmetlere nasıl erişilir?
Teşekkürler!
Oluşturucu aracılığıyla form türü için istediğiniz hizmetleri enjekte edin. Bir hizmet olarak form türü ilan etmek nasıl bir açıklaması için this page in the sympfony docs de
class FooType extends AbstractType
{
protected $barService;
public function __construct(BarService $barService)
{
$this->barService = $barService;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$this->barService->doSomething();
// (...)
}
}
bak. Bu sayfada çok iyi dokümantasyon ve örnek var.
Cyprian doğru yolda, ancak bağlantılı sayfa form hizmetinizi bir hizmet olarak oluşturarak ve DI kapsayıcısının hizmeti otomatik olarak enjekte ederek bir adım daha ileriye götürür. önceki cevaplar/açıklamalara dayanarak tam bir cevap olarak
:
senin Formu Tipi Bir servise erişmek amacıyla, etmelisin:
1) Define your Form Type as a service ve içine gerekli hizmeti enjekte:
// src/AppBundle/Form/MyFormType.php
class MyFormType extends AbstractType
{
protected $myService;
public function __construct(MyServiceClass $myService)
{
$this->myService = $myService;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$this->myService->someMethod();
// ...
}
}
:
# src/AppBundle/Resources/config/services.yml
services:
app.my.form.type:
class: AppBundle\Form\MyFormType # this is your form type class
arguments:
- '@my.service' # this is the ID of the service you want to inject
tags:
- { name: form.type }
2) Şimdi form tipi sınıfında, yapıcı enjekte
Ayrıca, yeni bağımsız değişkeni Hizmetler dosyasındaki FormType bildirimi olarak eklemeniz gerekir, ör. bu cevabı tam olarak çalışmak için services.yml – dxvargas
içinde, form türünüz [hizmet olarak tanımlanmış olmalıdır] (http://symfony.com/doc/current/form/create_custom_field_type.html#creating-your-field- tip-olarak-a-hizmet) – ShinDarth