我想验证包含多个输入字段的表单。其中大部分都是简单的文字/数字,并且工作正常。
对于表单的一部分,我创建了几个字段('year'和'text')并通过while循环复制它们。
它看起来像这样:<?php while ($mcount <= 10):?>
<h4><?= __("Moment") ?> <?= $mcount ?></h4>
<div class="row">
<label for="year_<?= $mcount ?>"><?= __("Year") ?></label>
<input name="year_<?= $mcount ?>" value="" ></input>
<span class="error">Error Message for this particular Year</span>
</div>
<textarea name="text_<?= $mcount ?>" maxlength="400"></textarea>
<span class="error">Error Message for this particular Textarea</span>
<?php $mcount++; ?>
我尝试用这个来验证表单:
$texts = [ 'text_1', 'text_2', 'text_3', 'text_4', 'text_5', 'text_6', 'text_7', 'text_8', 'text_9', 'text_10',];
foreach ($texts as $mText) {
if (empty($_POST[$mText])) {
$errors[] = 1;
echo "missingtext". $mText ;
}
}
我的问题是在验证中创建一个变量,该变量负责特定年份/文本的错误消息。以及如何在while循环中输出此变量。
作为特殊功能,可能会发生10个时刻的部分由foreach循环创建 - 由一个processwire中继器字段填充。
感谢您的帮助!
答案 0 :(得分:4)
做一些明智的事情并使用PHP数组:
<?php while ($mcount <= 10):?>
<h4><?= __("Moment") ?> <?= $mcount ?></h4>
<div class="row">
<label for="year[<?= $mcount ?>]"><?= __("Year") ?></label>
<input name="year[<?= $mcount ?>]" value="" ></input>
<span class="error">Error Message for this particular Year</span>
</div>
<textarea name="text[<?= $mcount ?>]" maxlength="400"></textarea>
<span class="error <?= isset($errors[$mcount])?"":"hidden" ?>">Error Message for this particular Textarea</span>
<?php $mcount++; ?>
然后在代码中,这是
的问题foreach ($_POST["text"] as $ind => $mText) {
if (empty($mText)) {
$errors[$ind] = 1;
}
}
并且有一种风格:
.hidden { display: none; }
上有更多信息
答案 1 :(得分:0)
在循环之外定义数组
public final class SomeThing{
private String val;
@JsonCreator
public static SomeThing create(final String value) {
SomeThing result = new SomeThing();
result.setValue(value);
return result;
}
public void setValue(String value) {
this.val = value;
}
}
这样做可以防止在每次迭代时覆盖数组。
然后在循环添加,
$texts = [ 'text_1', 'text_2', 'text_3', 'text_4', 'text_5', 'text_6', 'text_7', 'text_8', 'text_9', 'text_10',];
$errors = [];
这样做会为数组添加新的错误。
然后一旦循环完成,
array_push($errors, mText . ' cannot be empty.');
如果if (!empty($errors)) {
foreach($errors as $error) {
echo $error;
}
}
不为空(如果存在错误),这样做会循环错误。
阅读材料