【问题标题】:How to validate multiple forms inline on a single IF?如何在单个 IF 上内联验证多个表单?
【发布时间】:2016-05-10 10:00:22
【问题描述】:

出于逻辑和更快的目的,每当您让 PHP 使用 AND 条件尝试两个语句时,如果第一个失败,他不会尝试尝试第二个......出于逻辑和更快的目的,这确实很漂亮,但是就我而言,我需要知道第二条语句是否也不起作用,所以我不需要让用户多次浏览同一页面,因为错误与以前不同......

所以,假设我有这个:

    if ($firstModel->validate() && $secondModel->validate()) {$sayCheese;}

如何让它同时尝试?

我确实考虑过分离模型,但我只是想知道是否有替代方案。

编辑: 我的表单同时针对不同的模型进行了多次插入,因此如果仅针对单个模型,验证效果很好,并且由于我需要同时尝试两个或更多,因此必须在第一个语句处停止。

【问题讨论】:

  • 单独的 if 语句怎么样?
  • && 用于检查 this 和 this 是否为 true 然后执行。如果您希望 2 中的 1 为真并执行,只需使用 OR ||
  • 我实际上需要同时尝试它们,因为它们在系统上是不同的模型,但在插入时都需要它们,但我必须允许一个或另一个,但事实并非如此。

标签: php yii


【解决方案1】:
if ($firstTry & $thenTry) {$sayCheese;}

这将执行按位与,并检查 $thenTry,即使 $firstTry 为假。

编辑:请注意,我只是天真地回答你的问题,但我不完全确定你为什么真的想要这样做。

【讨论】:

  • 但这肯定会让您知道这些条件之一是错误的。然后,您必须在此 if 中编写另一个 if 来确定哪个条件为假,以便返回正确的错误。所以它实际上并没有节省任何时间或代码
  • @RiggsFolly 是的。 if / else 结构会更简洁。
  • 但是这个想法并没有节省时间或代码,这个想法是尝试两个语句,这样我就可以根据两个错误而不是一个错误在表单上设置错误,我知道有一个方式,但我忘记了如何。而且我真的不明白为什么我有这么多反对票,其他地方还有这个问题?
  • @RafaelBoszko 您很可能被否决了,因为这里的人们认为您的编码方法并不优雅。但我明白有时你必须以某种方式做事。如果您正在寻找答案,请不要忘记将答案标记为已接受。
  • 我猜每个系统都有它的好处,对吧?无论如何,谢谢。
【解决方案2】:

您应该考虑拆分检查和 if 条件

$firstTry = checkOne();
$thenTry = checkTwo();
if ($firstTry && $thenTry) {
    echo $sayCheese;
} else {
    echo "check 1: ".($firstTry ? 'ok' : 'bad')."<br>";
    echo "check 2: ".($firstTry ? 'ok' : 'bad')."<br>";
}

【讨论】:

  • 我也这么认为,但我的表单有一个提交和三个模型更新,所以它可能会留下关于一个模型或另一个模型的信息。
猜你喜欢
  • 2013-11-15
  • 1970-01-01
  • 2011-06-02
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多