各种状态应以不同的方式显示(假设它们只是具有不同的背景颜色).
我使用PHP来查询数据库,并构建网页表.在构建表时,我将基于该行的状态将css类应用于元素.
我有至少2个选项来执行此操作:
>在PHP中定义代码逻辑来处理它,如果在数据库中更改了状态,我将不得不更改代码.
>将“类”存储在数据库中,只需应用已存储的类.
后一种选择对我来说似乎更好,但我不确定将表示数据嵌入数据库是一个糟糕的设计选择.这将是我创建几个内部网实用程序的基础,我想从右脚开始.
您可以通过在elementInfo对象的属性中封装表示层的数据来确保这些问题是分开的(例如).
由于它是您正在讨论的CSS类,因此该演示文稿数据应与业务数据分开.因此,虽然可以将演示数据和业务数据存储在数据库中,但将它们存储在同一个表中是不可接受的.
更新:评论不,您不应该在业务对象上添加PresentationClassRecord的Id作为FK.我在下面的数据库中提供了一个方法的示例.我将DummyTable称为业务对象,其余的遵循规范.最相关的部分是StatusPresentationAssignmentTable
----------------------------------------------- DummyTable ----------------------------------------------- Id Name SomeOtherDataField StatusId PK int varchar int FK int ----------------------------------------------- StatusTable ----------------------------------------------- Id Name ModifiedDate PK int varchar datetime ----------------------------------------------- PresentationTable ----------------------------------------------- Id PresentationType Value PK int varchar sample data: 43 CssClass prettyBackground ----------------------------------------------- StatusPresentationAssignmentTable ----------------------------------------------- StatusId PresentationId FK int FK int
现在有两个简单的连接子句,您可以获取演示数据,并且它与您的业务数据完全分离.您的脚本可以执行类似检查Dummy的状态是否具有任何演示文稿分配的操作.如果是,则查看PresentationType,获取相应的函数以将演示数据应用于演示文稿,并执行它. (您需要为每个知道如何处理该值的PresentationType提供一个函数 – 可以通过函数applyPresentationValue(presentationElement,presentationType,presentationValue)封装的函数,如果presentationType调用另一个函数applyCssClass(presentationElement,value) ==“CssClass”).