0

ArticleモデルとCommentモデルがあるとしましょう。

Article:
  columns:
    body: text

Comment:
  columns:
    article_id: integer
    message: text
  relations:
    Article:
      local: article_id
      foreign: id
      foreignAlias: Comments

そして、「記事」と「コメント」のルートコレクションに基づいて2つのモデルを生成します。

article:
  class: sfDoctrineRouteCollection
  options:
    module: article
    model: Article

comment:
  class: sfDoctrineRouteCollection
  options:
    module: comment
    model: Comment

したがって、基本的に各モデルに2つのクラッドがあります。さて、記事のショーアクションでは、記事、関連するコメント、コメントを追加するためのフォームを表示したいと思います。

class articleActions extends sfActions
{
  public function executeShow(sfWebRequest $request)
  {
    $this->article = $this->getRoute()->getObject();
    $this->comments = Doctrine::getTable('Comment')->findAllByArticleId ($this->article->getId());
    $this->form = new CommentForm();

  }
}

問題は、記事/アクションの表示にコメントを投稿するときに、コメント/新規およびコメント/作成アクションを再利用するにはどうすればよいですか?これはコードを整理する正しい方法ですか?

4

1 に答える 1

1

アクションを再利用したい場合は、コンポーネントが必要になる可能性があります。コンポーネントはパーシャルに似ていますが、何らかのロジックを追加する必要がある場合にコンポーネントを使用します (コメント/新規またはコメント/作成のアクションで使用するコードなど)。

コンポーネントはアクションに似ていますが、はるかに高速です。コンポーネントのロジックは、actions/components.class.php ファイルにある sfComponents から継承するクラスに保持されます。そのプレゼンテーションは部分的に保持されます。

ここで Symfony のドキュメントを確認してください:

ドキュメントは Symfony 1.2 用です。私は Symfony 1.4 で問題なく使用しています。

コンポーネントがあなたが探しているものであると確信しています。

于 2011-06-04T05:11:14.863 に答える