您有一个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,那么您将如何做呢?
请将回答范围缩小为:
发布于 2016-10-28 17:44:59
您可以创建一个与$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;
}发布于 2016-10-28 17:46:09
解决这个问题的一个简单方法是将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",如果它是假的则什么也不做。
https://stackoverflow.com/questions/40310340
复制相似问题