Wordpress只在for循环中回显一次

时间:2017-02-08 13:06:17

标签: php wordpress plugins

所以我试图只打印一些标签,每个循环有四个标签。

所以我总是尝试遍历并在每个标签上打印一次标签。

第二个是每个循环打印四个标签。

为了更好地解释这里有一些图片。

我想要的是什么 - http://i.imgur.com/LPbqd53.png 它目前是什么 - http://i.imgur.com/WqNrgBc.png

这是我的代码

<item name="background">

3 个答案:

答案 0 :(得分:2)

这绝不是一个复制粘贴解决方案。您的代码中有些变量我不知道它们包含什么,但这应该是解决方案的潜在想法。基本上,期望的结果是&#34;表&#34;数据的。您是否使用表格或div来构建HTML结构。您可以使用诸如bootstrap或foundation或其他CSS框架提供的布局。此示例仅使用表来提供结构。您需要将答案标签绘制到容器(如数组)中,以便在表头中进行迭代。然后,您可以简单地使用输入呈现每个答案,而不关心是否在每次迭代时打印它。希望这有帮助!

<?php
/**
 * @var array $answerLabels
 * @var WpTesting_Model_Question[] $questions
 */
?>
<table>
    <thead>
        <tr>
            <td></td>
            <?php foreach ($answerLabels as $label): ?>
                <td><?= $label ?></td>
            <?php endforeach; ?>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($questions as $question): ?>
            <tr>
                <td><?= $question->getTitle() ?></td>
                <?php foreach ($question->buildAnswers() as $index =>     $answer):
                    $answerId = 'wpt-test-question-' . $question->getId() . '-answer-' . $answer->getId(); 
                ?>
                    <td>
                        <label for="<?= $answerId ?>">
                            <input type="<?= $isMultipleAnswers ? 'checkbox' : 'radio' ?>"    
                                   id="<?= $answerId ?>"
                                   data-errormessage="<?= $isMultipleAnswers
                                       ? __('Please select at least one answer.', 'wp-testing')
                                       : __('Please choose only one answer.', 'wp-testing') ?>"
                                <?php if (0 == $index): ?>
                                    required="required"
                                    aria-required="true"
                                <?php endif ?>
                                   name="<?= $answerIdName ?>[<?= $answerIndex ?>]"
                                   value="<?= $answer->getId() ?>"/>
                        </label>
                    </td>
                <?php endforeach; ?>
            </tr>
        <?php endforeach; ?>
    </tbody>
</table>

答案 1 :(得分:2)

我设法通过重置修复此问题。

<?php if($i==0): ?>

<?php foreach($question->buildAnswers() as $a => $answer): /* @var $answer WpTesting_Model_Answer */ ?>

<?php $answerId = 'wpt-test-question-' . $question->getId() . '-answer-' . $answer->getId() ?>

<label for="<?php echo $answerId ?>"> <?php echo $answer->getTitleOnce(); ?></label>

<?php if ($isMultipleAnswers) {$answerIndex++;} ?>

<?php endforeach ?>

<?php $i = 1; ?>

<?php endif; ?>

答案 2 :(得分:1)

实际上你做错了,因为你用输入打印标签。

您可以先打印标签静态,然后打印为

foreach输入显示内嵌

您还可以使用表格vg.util.format.timeLocale({ dateTime: "%A, der %e. %B %Y, %X", date: "%d.%m.%Y", time: "%H:%M:%S", periods: ["AM", "PM"], // unused days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], shortDays: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], shortMonths: ["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"] }); <tr>来正确对齐输入。