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 个 crud。现在,在文章的显示操作中,我想显示一篇文章,它的相关评论和添加评论的表单。

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

如果你想重用动作,你可能需要一个组件。组件类似于partials,但是当您必须向它添加一些逻辑时使用组件(例如您在comment/new 或comment/create 操作中使用的代码)。

组件就像一个动作,只是它要快得多。组件的逻辑保存在一个继承自 sfComponents 的类中,该类位于 actions/components.class.php 文件中。它的介绍是部分保留的。

在这里查看 Symfony 的文档

文档适用于 Symfony 1.2,我在 Symfony 1.4 中使用它没有问题

我真的很确定您正在寻找一个组件。

于 2011-06-04T05:11:14.863 回答