我正在为我们的应用程序创建一组显示对象库。它们以不同的视图呈现常见对象(用户、会话、消息等)的 HTML。所谓视图,是指对象可以以不同的标记语言返回不同的“缩放级别”。
一些显示对象包含其他显示对象来进行渲染,例如用户列表对象按照特定视图呈现用户对象(这个特定视图将它们作为列表项返回,以适合列表中)。
我试图将它们移动到 ZF 中正确的实现方式,但我无法确定它们是否应该全部成为视图助手,还是它们都是视图脚本/局部视图。
仅将它们设为视图脚本并使用 ->render() 渲染似乎有点不太好,因为我想传递给它们的任何信息或参数都必须分配给视图对象。
局部视图似乎更正确,但不确定在其中执行显示逻辑是否合适(如果将“showNotificationStatus”作为参数传递,则呈现此 span)。或者局部视图是否可以呈现其他局部视图(用户列表呈现用户对象)。
视图助手似乎可能是正确的方法,但我不知道是否过度使用了视图助手。每个对象都可以是一个视图助手,并接受一个 objectview 参数,以便知道要在哪个缩放级别/容器中呈现自己,或者每个 objectview 甚至可以是它自己的助手(因此没有大的 switch 语句在对象内部)。视图的一个好处是您可以传递参数,如果需要从该级别获取一些内容,则仍然可以访问视图上下文。
其中大多数将接受模型,其中一些需要一些额外的参数来知道要做什么(例如上面的 showNotificationStatus)。这个问题的正确工具是什么?
一些显示对象包含其他显示对象来进行渲染,例如用户列表对象按照特定视图呈现用户对象(这个特定视图将它们作为列表项返回,以适合列表中)。
我试图将它们移动到 ZF 中正确的实现方式,但我无法确定它们是否应该全部成为视图助手,还是它们都是视图脚本/局部视图。
仅将它们设为视图脚本并使用 ->render() 渲染似乎有点不太好,因为我想传递给它们的任何信息或参数都必须分配给视图对象。
局部视图似乎更正确,但不确定在其中执行显示逻辑是否合适(如果将“showNotificationStatus”作为参数传递,则呈现此 span)。或者局部视图是否可以呈现其他局部视图(用户列表呈现用户对象)。
视图助手似乎可能是正确的方法,但我不知道是否过度使用了视图助手。每个对象都可以是一个视图助手,并接受一个 objectview 参数,以便知道要在哪个缩放级别/容器中呈现自己,或者每个 objectview 甚至可以是它自己的助手(因此没有大的 switch 语句在对象内部)。视图的一个好处是您可以传递参数,如果需要从该级别获取一些内容,则仍然可以访问视图上下文。
其中大多数将接受模型,其中一些需要一些额外的参数来知道要做什么(例如上面的 showNotificationStatus)。这个问题的正确工具是什么?