您有一个PHP表单,其中包含以下字段:
(代码区块1)
City: <input type="text" name="city"><br>
表单action attribute
设置为itself
。当submitted
到服务器时,页面会验证该字段,如果该字段无效,则返回相同的页面:
我可以使用if then else
构造,如果无效则返回code block 2
。
(代码区块2)
<?php echo "The form field with red border has an invalid entry"; ?>
City: <input type="text" name="city"
style="border-color:red" value="<?php echo $record->city ?>"><br>
我的问题是,如果你要为code block 1
添加一些模板以便你不需要code block 2
,你会怎么做?
请将答案集缩小为:
答案 0 :(得分:0)
您可以创建$ has_error关联数组,并将其直接集成到原始表单中,而不是使用if / else:
City:
<input type="text" name="city" class="<?= $has_error['city']['class'] ?>" value="<?= $record->city ?>">
<span><?= $has_error['city']['message'] ?></span>
<br>
并构建您的验证错误,如下所示:
$has_error = [
'city' = [
'class' => '',
'message'=> ''
]
]
然后在验证方面(您提交表单的地方)应用错误类和消息。因此,当city
输入字段未通过验证时,您的$has_error
数组将如下所示:
$has_error = [
'city' = [
'class' => 'error',
'message'=> 'This field has an error'
]
]
您的错误类看起来像这样:
.error{
border: 2px solid red;
}
答案 1 :(得分:0)
解决此问题的一种简单方法是将code block 2
的格式添加到CSS文件中,然后使用PHP将类添加到输入中。
CSS:
.errorField {
border-color: red;
}
HTML /内联PHP:
City: <input type="text" <?php echo errorCity ? 'class="errorField"' : '' ?> name="city" value="<?php echo $record->city ?>"><br>
如果输入无效,请将验证PHP设置为errorCity
至true
。
内联PHP正在做的是检查bool errorCity
的值并回显class="errorField"
如果它是真的,或者如果它是假的则没有。