代码之家  ›  专栏  ›  技术社区  ›  Bob Spryn

Zend Framework-何时使用viewscripts/partials与view helpers

  •  6
  • Bob Spryn  · 技术社区  · 16 年前

    某些显示对象包含要渲染的其他显示对象,例如,用户列表对象在特定视图中渲染用户对象(此特定视图将用户对象吐回列表项中,以便将其放入列表中)

    只是让他们查看脚本并使用->render()看起来有点脏,因为我要传递给它们的任何信息或参数都必须分配给view对象。

    Partials似乎更正确一些,只是不确定是否应该在这些中执行显示逻辑(如果'showNotificationStatus'作为参数传递,则呈现此范围)。或者如果用partials来呈现其他partials(一个呈现用户对象的用户列表)是不合适的。

    其中大多数都将接受模型,少数需要一些额外的参数来知道要做什么(例如上面的showNotificationStatus)。什么是合适的工具?

    2 回复  |  直到 13 年前
        1
  •  15
  •   Bryan M.    16 年前

    partials的一个核心思想是它们应该尽可能地可重用——因此它们有自己的变量范围。我喜欢使用partials作为一小部分HTML的哑容器。没有什么主要的逻辑,只有几个 if() 或 foreach()

    如果我需要严肃的逻辑-我会用一个助手。助手应该负责处理逻辑和调用呈现方法。我知道在Rails的世界里,助手倾向于封装一些逻辑,比如处理链接或图像标签的构造。这是伟大的,但我不认为有任何伤害,使他们更复杂的采埃孚。我基本上使用它们将业务对象转换为视图。

    我认为使用partials和helpers的最好方法是让helpers设置数据,然后将其传递给partials。这样你的HTML就很容易维护(我怀疑每次有人输入 echo "<a href='". $my_link . '"/>" 一只小猫死在某处)。

    (详细说明):

    关于helper要记住的是,它们可以像普通类一样对待,使用带参数的构造函数,并且具有私有成员。因此,当您实例化一个助手时,您可以创建一个业务对象,然后拥有多个呈现HTML的方法(通过partials)。

    所以在我看来:

    <?php $helper = $this->_helper->MyUserHelper($users); ?>
    <ul>
      <?php $helper->user_list(); ?>
    </ul> 
    

    这里,那个 user_list() 方法返回 <li> 包含所有正确数据的元素。

    class MyWidgetHelper 
    {
      private $_widget;   
    
      public function __construct($users)
      {
         $this->_users = $users;
      }
    
      public function user_list()
      {
         // do any necessary logic here
         // then return the html that gets rendered. 
         // you can call a partial from here, and it just returns an HTML string.
         return $this->_view->partial('partials/_user_item.phtml', array('users' => $users)
      }
    }
    
        2
  •  0
  •   takeshin    16 年前

    助手用于逻辑(例如,将对象转换为数组),partials用于修饰逻辑(将递归数组显示为 <ul>

    记住,你也可以使用 $this->render('anyfile.ext') include() 也。