-1

mainデフォルトのモジュールであるというモジュールと、というモジュールがありますsong

mainモジュールの「追加フォーム」をモジュールに入れたいsongです。

コンポーネントを使用する必要があるかどうか、フォームを処理する方法と場所がわかりません。

手伝っていただけませんか ?

4

1 に答える 1

0

ドキュメントを確認しましたか?特にドキュメントのこの部分は

基本的な連絡先フォームを使用して、フォーム システムについて説明します。

  • フォームのインスタンスを作成し、送信(検証、保存など)を処理するコントローラー(モジュールactions.class.php内)があります。main
  • contactSuccess.php次に、フォームを表示するテンプレート ( )

主な違いは、おそらく Song というモデルがあるため、( を使用して) 新しいモデルを作成する代わりに、SongForm を使用する必要があることですnew sfForm()。この部分については、同じドキュメント ページで、アーティクル モデルのケースをカバーするモデルに基づくフォームの部分を参照できます。

編集:

ステップバイステップ:

あなたのmain/actions/actions.class.php

public function executeIndex($request)
{
  $this->form = new SongForm();
  if ($request->isMethod('post'))
  {
    $this->form->bind($request->getParameter('song'));
    if ($this->form->isValid())
    {
      $song = $this->form->save();

      $this->getUser()->setFlash('notice', 'Thank you, the song has been added');

      $this->redirect('main/index');
    }
  }
}

テンプレートでは、次のようになりますmain/templates/indexSuccess.php

<?php if ($sf_user->hasFlash('notice')): ?>
  <div class="flash_notice"><?php echo $sf_user->getFlash('notice') ?></div>
<?php endif ?>

<?php echo $form->renderFormTag('main/index') ?>
  <table>
    <?php echo $form ?>
    <tr>
      <td colspan="2">
        <input type="submit" />
      </td>
    </tr>
  </table>
</form>

これで完了です。

Jobeetチュートリアル全体を読むことを強くお勧めします。あなたは多くのことを学ぶでしょう。基本的に、ここで説明したことはすべてこのチュートリアルに含まれています。

sf_guard_userフィールドについては、非表示として再定義してから、現在接続しているユーザーでデフォルト値を設定する必要があります。

新しいフォームを作成します。/lib/form/CustomSongForm.class.php

<?php

class CustomSongForm extends SongForm
{
  public function configure()
  {
    parent::configure();

    $this->widgetSchema['sf_guard_user_ud'] = new sfWidgetFormInputHidden();
  }
}

次に、あなたが言ったように、デフォルトを定義できます:

}$this->form->setDefault('sf_guard_user_id', $this->getUser()->getId());
于 2012-09-26T11:46:43.703 に答える