两个模型的一个视图:使用基本模型类以使其更容易?

发布于 2024-11-06 01:47:50 字数 501 浏览 2 评论 0原文

我有这样的场景:

  • 一个用于管理酒店的网站。
  • 在项目过程中添加了另一种酒店模型,所以现在它们是两种。
  • 现在老板希望酒店列表中包含这两种酒店。

我正在考虑以下可能的解决方案:

  1. 发明一个包含在酒店列表中显示所需的公共属性的超类,并适当地重写。
  2. 在视图中破解我的方式。它现在有一个循环,在途中生成 HTML 代码(显然)。如果这有效,将会有两个循环。

我在方法 #1 中看到的问题是:“Hotel1 扩展 BaseHotel1”、“Hotel2 扩展 BaseHotel2”。那么好吧,我将创建一个超类,然后呢?

方法 #2 的问题是:我距离“专业”Symfony 开发人员还很远,而且我不确定所讨论的视图是否能够访问多个模型方法。也许来自另一个模块的渲染部分可以工作?

那么,我该怎么做呢?您认为我列出的问题容易解决吗?您还看到其他方法吗?

如果是这样,请分享您的想法。谢谢!

I am having this scenario:

  • A website for managing hotels.
  • Another kind of Hotel model has been added over the course of the project, so now they are two.
  • Now the boss wants the list of Hotels to include both kinds of Hotels.

I was thinking of the following possible solutions:

  1. Invent a superclass containing the common properties needed to display in the list of Hotels, and override appropriately.
  2. Hack my way in the view. It has one loop now, producing HTML code on the way (obviously). If this works, there will be two loops.

The problem I see with approach #1 is this: "Hotel1 extends BaseHotel1", "Hotel2 extends BaseHotel2". So OK, I will create a superclass, then what?

The problem with approach #2 is this: I am still far from a "pro" Symfony developer and I am not sure the view in question will have access to more than one model methods at all. Maybe render-partials from another module would work?

So, how do I do this? Do you think the problems I listed are easy to solve? Do you see another approaches?

If so, please share your thoughts. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

近箐 2024-11-13 01:47:50

我知道您已将问题标记为 Propel,但我会考虑使用 学说继承在这里 - 如果有 Propel 等效项 - 要么是“具体”,要么是“列聚合”(取决于您想要如何存储数据)。本质上,您最终会得到一个 Hotel 基类,然后您将拥有从该基类扩展的 Hotel1Hotel2 类。

这样,您就可以在 Hotel 模型和表类中拥有两个模型通用的方法,然后在 Hotel1Hotel2 类中拥有特定于酒店的方法。

编辑:刚刚找到Propel 等效项,尽管此链接适用于 Propel 1.5。然而,看起来 Propel 1.3 只支持“简单”继承类型。

I know you've tagged your question Propel, but I'd look into using Doctrine inheritance here - if there is a Propel equivalent that is - either the 'concrete' or 'column aggregation' (depending on how you want to store your data). Essentially you'd end up with a base Hotel class, which you'll then have eg Hotel1 and Hotel2 classes extending from.

This way you can have methods common to both models in the Hotel model and table classes, and then hotel-specific methods in the Hotel1 and Hotel2 classes.

Edit: Just found the Propel equivalent although this link is for Propel 1.5. It looks as if Propel 1.3 only supports the 'simple' inheritance type however.

流星番茄 2024-11-13 01:47:50

Doctrine 在这里提供了一个很好的解决方案。看看 列聚合继承。也许 Propel 提供了类似的东西,但我对 propel 不熟悉……

Doctrine provides a nice solution here. Have a look at the column aggreation inheritance. Maybe Propel provides something similar to that, but I'm not familiar with propel…

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文