【发布时间】:2013-03-28 15:47:26
【问题描述】:
我正在尝试将 HTML 元素与 Zend Framework 2 中的 PHP 代码分开,但我不知道如何解决这个问题/分开。我目前正在回显那些完成这项工作的 HTML 元素。但是必须有一种方法可以将 HTML 与 PHP 分开,而不是回显 HTML 元素。
目前我制作了一个viewhelper,它可以帮助我为其他模块生成这个treeMap,因为这些模块也将使用这个特性,只要这个helper 带有一个treeMap。 categoryTreeMap 包含类别(Doctrine 2 ORM)对象的树形图。
这是我目前得到的:
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
class CategoryTreeMapHelper extends AbstractHelper
{
public function __invoke($categoryTreeMap)
{
echo "<ol class=\"sortable\">";
foreach ($categoryTreeMap as $category) {
$this->showCategories($category);
}
echo "</ol>";
}
public function showCategories($category)
{
echo "<li><div>" . $category->name . "</div>";
if (isset($category->childs)) {
echo "<ol>";
foreach ($category->childs as $child_category) {
$this->showCategories($child_category);
}
echo "</ol>";
}
echo "</li>";
}
}
有关如何解决此问题的任何建议,方法是将 HTML 与 PHP 回显分开。
【问题讨论】:
-
除了接受单个内容参数并循环遍历它之外,您的助手是否还在做其他事情?如果没有,使用部分模板可能会更好地解决这个问题
-
我只是构建一个字符串并将其返回以进行回显。一般来说,我不喜欢从助手/函数中呼应。
-
这个 viewhelper 没有做任何其他事情,除了打印带有对象名称的树形图列表,由参数接收。问题是我真的不知道如何使用部分,你能给他们一个参数来读取树图吗? @Crisp
-
那么请看下面我的回答
-
@Sam,我不同意你的前提,我只是提供一种替代方法来解决 OP 的要求。也就是说,当需要更改以迎合底层列表的某些特定显示时,覆盖模板可能比换出或以其他方式编辑帮助代码更容易。
标签: php model-view-controller view zend-framework2