0

这实际上主要是一个 Zend 问题,而不是一个 jQuery。

我正在尝试使用 Zend 实现 jQuery 嵌套排序http://mjsarfatti.com/sandbox/nestedSortable/,保存并读出可排序元素(包括它们的父元素)的确切位置。现在,我的 partialLoop 文件中有以下代码,这是我工作的主要部分。如果元素有子元素,它会在另一个 partialLoop() 方法中(递归地)调用自身,如下所示,即 partials/_docs-edit-row.phtml 本身:

<?php
// not really nice to call a db model in a view file, but is there an other way... ?
$docSectionModel = new Model_DocSection();
global $workedthrough, $i;

$childs = $docSectionModel->fetchChildSections($this->id);
if($childs)
    $childs = $childs->toArray();
?>

<?php if(empty($workedthrough) || !in_array($this->id, $workedthrough)) : ?>
<?php $workedthrough[] = $this->id; ?>
<li>
    <div class="handle">
        <input type="hidden" class="section_id" name="section_id[<?php echo $i; ?>]" value="<?php echo $this->id; ?>" />
        <input type="hidden" class="section_parent_id" name="section_parent_id[<?php echo $i; ?>]" value="<?php echo $this->parent_id; ?>" />
        <input type="text" name="section_title[<?php echo $i; ?>]" value="<?php echo $this->title; ?>" />
        <a href="#" class="open"></a>
    </div>
    <div class="inner-edit closed">
        <textarea name="section_content[<?php echo $i; ?>]"><?php echo $this->content; ?></textarea>
        <input type="submit" name="doc_save" value="Save" />
        <input type="submit" name="remove_doc_section[<?php echo $i; ?>]" value="Remove this section" />
    </div>

    <?php if($childs) : ?>
        <ol>
            <?php echo $this->partialLoop('partials/_docs-edit-row.phtml', $childs); ?>
        </ol>
    <?php endif; ?>

</li>
<?php endif; ?>
<?php $i++; ?>

我在这里尝试做的是使用 $ia counter 创建,它通过两个循环来获得一个连续的计数器,因为 $this->partialCounter 将从每个新级别的开头开始。所以实际上这是我的主要问题(我在主视图文件中定义了 $i 以及 $workthrough 来查看项目是否已被检查以避免多次调用不在第一级的项目循环) $i 似乎出于任何原因都没有正确计算,而 $workthrough 就像一个魅力。 现在,是否有可能在所有部分循环中都有一个连续的计数器?另外,我真的很想知道是否有人有更好的方法来做我想做的事情。

如果某些事情看起来很奇怪或不清楚,我当然会解释。我很感激任何帮助!

最好的问候, .wired

4

1 回答 1

1

一些可能对您有所帮助的信息:

  • 使用嵌套的 partials 是可行的,但由于 partials 会克隆视图,它很快就会成为性能问题,最好避免

  • 您可以将行集作为对象传递给部分,这将使您能够调用相关行集$view->partialLoop()->setObjectKey('model')

  • 在您的情况下,最好自己循环并使用 render() 而不是部分。

于 2011-10-08T23:38:55.663 回答