2013-07-01 9 views
17

çağrılabilir değilSymfony'nin kontrolör embedd hatası: "/ _fragment" URI için kontrolör ben bu yüzden benim Twig şablonunda (hat 18)</p> <pre><code>{{ render(controller('AcmeReadingBundle:Default:newAction')) }} </code></pre> <p>Ve denetleyici gibi sıva arıyorum

public function newAction(Request $request) 
    { 
     $message = new Message(); 
     $form = $this->createFormBuilder($message) 
     ->add('body', 'text') 
     ->add('save', 'submit') 
     ->getForm(); 

     $form->handleRequest($request); 

     return $this->render('AcmeReadingBundle:Default:new.html.twig', array(
      'form' => $form->createView(), 
     )); 
    } 

Ve new.html.twig dosyası

{{ form(form) }} 

Ben bu hatayı almaya devam geçerli:

An exception has been thrown during the rendering of a template ("The controller for URI "/_fragment" is not callable.") in AcmeReadingBundle:Default:show.html.twig at line 18. 

cevap

30

Çözüm: Bir şablonu ('... new.html.twig') yerine kontrolör/eylem arasında controller() kullanarak işlemek için çalışıyoruz

!

değişiklik için render fonksiyonu:

{{ render(controller('AcmeReadingBundle:Default:new')) }} 

(haber: hayır "... Eylem" yöntemi adı)


İpucu:

_fragment Belirtilen denetleyici adıyla bir sorun olduğunda istisna çoğunlukla atılır. Bu istisnanın nedeni genellikle denetleyicinin/işlemin adını yazımın yanlış yazılmasıdır.


fazla okuma:

this cookbook article bir göz atın.

+0

Bu kodla denedim ve aynı sonucu alma im –

+0

üzgünüm newAction yerine yeni olmalı – nifr

+0

Denetleyicime kod örneğinde olduğu gibi newAction adı verilir. Ve ben AcmeReadingBundle: Default: Action –

0

@nifr ile katılıyorum Bir denetleyici/eylem yerine denetleyici() kullanarak bir şablon ('... new.html.twig') oluşturmaya çalışıyorsunuz!

{{render (('AcmeReadingBundle: Varsayılan: Yeni' kontrolör:))}} için

değişiklik işlemek fonksiyonu

(not: yöntem adında hayır "... Proje")

Kontrol ünitesinde, tanımlanmış bir işlev ortak bir fonksiyonu ise

Below is more if above solution is not giving you solution.

  1. kontrol edin. Benim durumumda korumayı tanımladım.

sayesinde

Anirudh Sood.

İlgili konular