Tôi đang cố gắng tìm một tùy chọn làm việc có thể tái sử dụng nhiều nhất để có thể dịch từ một FormType.Tiêm dịch vụ dịch sang FormType
lựa chọn đầu tiên của tôi là để tuyên bố một dịch vụ cụ thể cho từng FormType theo cách này:
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()
));
cho lỗi này
FatalErrorException: Error: Call to undefined method Acme\DemoBundle\Form\EnquiryType::create()
Tôi muốn biết nóng để giải quyết nó bằng cách thay đổi mã hoặc thậm chí tìm kiếm tốt hơn một lựa chọn tốt hơn cho phép tôi để tiêm dịch vụ phiên dịch cho bất kỳ FormType mà không cần phải khai báo mỗi Dịch vụ FormType riêng lẻ.
BuildForm() tất nhiên có $ builder-> add lines, chỉ bị bỏ qua trên mã vì không có liên quan đến vấn đề này. Vậy làm thế nào các services.yml và sử dụng & _construct từ enquiryType nên được? –
Nếu Bạn có lĩnh vực được xác định trong 'formBuilder' xóa 'create' và xây dựng nên nhìn như' public function __construct (TranslatorInterface $ dịch = null) ' –
Done như đề xuất nhưng sau đó nhận được lỗi này: Gọi phương pháp xác định Acme \ DemoBundle \ Mẫu \ EnquiryType :: createView(). Ở phía bên kia tôi nhận được một giá trị null cho $ translator, tôi có nên thay đổi services.yml không? –