0

私はsymfony 1で作業しています.RenderPartial関数を使用してウィジェットをポップアップに配置すると、次のエラーが発生します:

注意: 未定義の変数: 49 行目の ...templates/template.php のフォーム
致命的なエラー: 49 行目の .../templates/template.php の非オブジェクトに対するメンバー関数 open() の呼び出し

これはclass.phpの私の関数です:

public function executeProduct(sfWebRequest $request)
{
  $this->renderPartial('integrate/Product');
  $form = new ProductForm();

  if ($request->isMethod('post') && $request->hasParameter($form->getName()))
  {
    $form->bindRequest($request); 
    if ($form->isValid())
    {
      $form->save();
      return $this->redirectBack();
    }
    $this->forms['product'] = $form;
  }
  else 
  {
    foreach ($form->getGlobalErrors() as $nom=>$error)
    {
      echo $nom.':'.$error;
    }
  }
}

その解決策として何ができますか?

4

2 に答える 2

0

いいえ、残念ながらこの方法は間違っています。if ($request->isMethod('post'))

テンプレートを変更しました:

<form action="<?php echo url_for('integrate/Product') ?>" method="POST">            
<ul>
<ul> <li> <?php echo $form['name']->label()?> </li>
<?php echo $form['name']->field()?>

 </ul> 

のすべてのブロック:

if ($request->isMethod('post') && $request->hasParameter($form->getName()))

それを削除すると機能しますが、配置する必要があるため、この後変更します。私はこのエラーがあります:

注意: 未定義の変数: 49 行目の ...templates/template.php 内のフォーム 致命的なエラー: 49 行目の .../templates/template.php 内の非オブジェクトに対するメンバー関数 label() の呼び出し

于 2012-11-21T15:20:28.390 に答える
0

パーシャルをレンダリングするときは、変数を手動で提供する必要があります。試す

$this->renderPartial('integrate/Product', array('form' => $form));

アクションの最後に呼び出しを移動します。

于 2012-11-22T16:32:47.453 に答える