为什么if语句与request-> only()不起作用? (Laravel)

时间:2016-07-08 16:30:36

标签: php laravel

我对if语句有疑问,我不知道 知道如何解决它。我想要做的是,如果有人投入正确的话 vCode,将创建用户。如果vCode不正确,则不会创建用户,$ message变量将为:vCode invalid。

但即使放入正确的vCode,该消息仍然表示vCode无效。 这是我的代码:

public function store(Request $request) {

    $vCode = $request->only('vcode');

    if ($vCode == 'stackoverflow') {
        // request only the form-inputs with the names: firstname, lastname and email.
        $oUser = User::create($request->only('firstname', 'lastname', 'email')); 
        $oUser->createPassword();
        $oUser->setRole(2);
        $oUser->save();
        $message = $oUser->getFullname().'succesfully created';
    } else {
        $message = "vCode valid";
    }

    return back()->with('successmessage', $message);
}

2 个答案:

答案 0 :(得分:1)

$request->only('vcode')返回一个只包含一个元素的关联数组。

如果您在only()来电中有三件事,那么结果可能是:

$request->only('name', 'age', 'cheese');
// ['name' => 'Pingu', 'age' => '22', 'cheese' => 'gorgonzola']

但是如果你只有一个元素,你仍然得到一个数组,它恰好是更小的:

$request->only('vcode');
// ['vcode' => 'stackoverflow']

因此您需要更改if条件:

if ($vCode['vcode'] == 'stackoverflow') {
    // should work
}

或者您可以将其作为单个值:

$vCode = $request->input('vcode');
if ($vCode == 'stackoverflow') {
    // should work
}

答案 1 :(得分:0)

对单个项目使用普通电话input()$vCode = $request->input('vcode');only()返回一个数组。

另外,请勿使用==进行字符串比较,请使用===