0

ページに表示されるエンティティのフィールドがいくつかあります。これらのフィールドごとに、ajax を使用して一度に 1 つずつ編集できるようにしたいと考えています。これを行うために、すべての分野に対して独自のコントローラーを構築するというアイデアを思いつきましたが、それを機能させることができず、それが私がやろうとしていることに対する正しい解決策であるかどうかもわかりません. マイページの表示フィールド:

<div>
 <form class="ajax" action="{{ path('ajax_setSocial', { 'id': entity.id }) }}" method="post" {{ form_enctype(form) }}>
  <div class="editor">
        {{ form_errors(form) }}
        <div class="editLabel pls lti">{{ form_label(form.ragSocial) }}</div>
        <div class="editField"> 
            <div class="ptm">
                {{ form_widget(form.ragSocial) }} {{ form_errors(form.ragSocial) }}
            </div>     
            {{ form_widget(form._token) }}
            <div class="mtm">
                <button class="btn btn-primary disabled save" type="submit" disabled>Save</button>
                <button class="btn ann">Cancel</button>
            </div>
        </div>
  </div>
  </form>
 </div>
 <div>
  <form class="ajax" action="{{ path('ajax_setSocial', { 'id': entity.id }) }}" method="post" {{ form_enctype(form) }}>
  <div class="editor">
        {{ form_errors(form) }}
        <div class="editLabel pls lti">{{ form_label(form.pIva) }}</div>
        <div class="editField"> 
            <div class="ptm">
                {{ form_widget(form.pIva) }} {{ form_errors(form.pIva) }}
            </div>     
            {{ form_widget(form._token) }}
            <div class="mtm">
                <button class="btn btn-primary disabled save" type="submit" disabled>Save</button>
                <button class="btn ann">Cancel</button>
            </div>
        </div>
  </div>
  </form>
 </div>

私のコントローラーで:

public function setSocialAction(Request $request, $id)
{
    $em = $this->getDoctrine()->getManager();
    $entity = $em->getRepository('MyBusinessBundle:Anagrafica')->find($id);

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find Anagrafic entity.');
    }
    $field = $request->get('field');
    $class = $field.'Type()';
    $form = $this->createForm(new $class, $entity);
    $form->bind($request);

    if ($form->isValid()) {
        $em->persist($entity);
        $em->flush();

        $response = new Response();
        $output = array('success' => true);
        $response->headers->set('Content-Type', 'application/json');
        $response->setContent(json_encode($output));

        return $response;
    }

$class = $field.'Type()';
$form = $this->createForm(新しい $class, $entity);
これらのコード行を使用して、フォームフィールドを生成する動的クラスを作成しようとしましたが、文字列として変換されているため機能しません。エラーは次のとおりです。

Fatal error: Class 'ragSocialType()' not found

しかし、クラスはです!また、トップファイルに呼び出されます..説明したことを願っています。より良い方法に従うためのアドバイスを受け入れます!

4

1 に答える 1

1
$class = $field.'Type'; //remove the ()
$form = this->createForm(new $class, $entity); 
于 2013-02-25T11:38:57.807 に答える