输入验证互斥或 - php

我有一个名为Answer的模型。

该模型有两个可能的关系。 QuestionProduct
但是,答案只能有一种关系。问题或产品。

有一种创建答案的表格。

该表格有三个输入。其中两个是<select>输入。另一个是文本输入,称为名称。

我希望我的验证只允许填写一次。

我当前的验证:

$validator = Validator::make(
    Input::all(),
    array('name' => array('required'))
);

$validator->sometimes('product', array('required', 'numeric'), function ($input) {
    return !is_numeric($input->question);
});

$validator->sometimes('question', array('required', 'numeric'), function ($input) {
    return !is_numeric($input->product);
});

要求至少填写一个所选内容,但也要允许两个。

因此,我的问题是:如何更改验证以仅允许填写其中一项选择。
但是必须始终填写其中之一。

选择1:

<select name="question" class="form-control">
    <option>None</option>
    <option value="1" selected="selected">Question 1</option>
    <option value="2">Question 2</option>
</select>

选择2:

<select name="product" class="form-control">
    <option>None</option>
    <option value="2" selected="selected">Product 1</option>
    <option value="3">Product 2</option>
</select>

参考方案

首先。您必须在“无”选项中指定一个空值:

<option value=''>None</option>

您正在寻找XOR运算符,在这种情况下,您需要创建一个自定义验证规则:

Validator::extendImplicit('xor', function($attribute, $value, $parameters)
{
    if( $value XOR app('request')->get($parameters[0]))
        return true;
    return false;
});
Validator::replacer('xor', function($message, $attribute, $rule, $parameters)
{
    // add indefinite articles
    $IAattribute = (stristr('aeiou', $attribute[0]) ? 'an ' : 'a ') . $attribute;
    $parameters[0] = (stristr('aeiou', $parameters[0][0]) ? 'an ' : 'a ') . $parameters[0];

    if(app('request')->get($attribute))
        return 'You cannot choose both '.$IAattribute.' and '.$parameters[0].'.';
    return $IAattribute.' or '.$parameters[0].' is required.';
});


$validator = Validator::make(
    app('request')->all(),
    array('name' => array('required')
    ,'product' => array('xor:question')
));

验证IBAN PHP - php

在设计新平台时,我们尝试集成IBAN编号。我们必须确保IBAN已经过验证,并且存储在数据库中的IBAN始终正确。那么验证数字的正确方法是什么? 参考方案 正如我在其他问题中解释的逻辑一样,我尝试自己创建一个函数。根据Wikipedia文章中解释的逻辑,在下面找到合适的功能。国家特定验证。它适合吗http://en.wikipedia.org/wiki/Int…

检查对象是否已在集合中-Laravel - php

当我循环一系列不同的结果时,我希望将对象添加到新集合中。查询:$osRed = Item::where('category', 'Hardware') ->where(function ($query) { $query->where('operating_system', '…

Laravel 5 dataTables,带有控制器功能的初始化表 - php

我正在尝试创建一个用户的dataTable,其中每一行都有一个下拉子行,其中包含用户权限的复选框。因此,“超级”管理员可以动态地单击用户并在表中分配其特权。首先,不确定这是否是一个好主意,请随时提出一个更好的方法。也许每行一个简单的弹出模式会更容易,但是现在我已经决定这是一种很酷的方法,所以我继续进行。但是,目前尝试用AJAX初始化dataTable令我感到…

Laravel-foreach局部变量正在覆盖全局变量 - php

今天,我面临一个非常奇怪的问题。我有一个控制器,将从该控制器向视图sections thread和threads发送三个变量。在我看来,我正在使用foreach循环遍历所有部分,如下所示:@foreach($sections as $i => $section) 对于每个部分,我都将创建一个div并给出如下的ID:id="{{ $thread…

PHP Laravel从另一个驱动器读取文件 - php

我目前正在学习Laravel。我想知道是否有一种方法可以在Laravel中使用Storage::从另一个硬盘访问文件(使用Windows)。例如,我在驱动器C:上安装了带有Laravel的Xampp,但是我想访问网站目录之外的E:上的文件。我试过使用Storage::files('E:')和File::files('E:…