Bir FormType'dan çeviri yapabilmek için en çok yeniden kullanılabilir çalışma seçeneğini bulmaya çalışıyorum.Translator hizmetinin FormType'a enjekte edilmesi
Benim ilk seçenek her FormType için özel olarak bu şekilde bir hizmet ilan etmektir:
services.yml
form.enquiry:
class: Acme\DemoBundle\Form\EnquiryType
arguments: [@translator]
EnquiryType.php
use Symfony\Component\Translation\Translator;
class EnquiryType extends AbstractType {
public $translator;
public function __construct(Translator $translator=null)
{
$this->translator = $translator;
}
public function buildForm(FormBuilderInterface $builder, array $options) {
$tr= $this->translator;
$msg=$tr->trans('default_error');
$builder->add ...
MyController.php
$form = $this->container->get('form.enquiry')->create();
return $this->render('AcmeDemoBundle:Home:index.html.twig', array(
'form' => $form->createView()
));
FatalErrorException: Error: Call to undefined method Acme\DemoBundle\Form\EnquiryType::create()
Ben kodu değiştirmeden veya daha iyi her ilan etmek gerek kalmadan bana herhangi FormType için çevirmen hizmeti enjekte sağlar daha iyi bir seçenek bularak çözmek için sıcak bilmek istiyorum bu hatayı verir FormType hizmeti ayrı ayrı. Sen bütün form oluşturmak gerekir buildForm kadar içi
Elbette buildForm(), bu sorunla ilgili olmadığı için kodda atlanan $ builder-> add lines'a sahiptir. Peki services.yml ve enquiryType'ın kullanımı ve _construct nasıl olmalıdır? –
"formBuilder" delete "create" öğesinde tanımlanmış alanlarınız varsa ve kurucu 'public function __construct (TranslatorInterface $ translator = null)' gibi görünmelidir –
Önerilen şekilde yapıldı, ancak hata oluştu: Acme \ DemoBundle \ Form undefined \ EnquiryType :: createView(). Diğer tarafta $ çevirmen için boş bir değer alıyorum, ben de services.yml değiştirmeliyim? –