2016-07-08 8 views
1

私はif文に問題があります。私は の修正方法を知っていません。私がしたいことは、誰かが正しい vCodeを入力すると、ユーザーが作成されるということです。 vCodeが正しくない場合、ユーザーは作成されず、$ message変数は次のようになります。vCode invalid。request-> only()のステートメントが機能しないのはなぜですか? (Laravel)

正しい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); 
} 
+0

あなたは特定の$ vCode === 'stackoverflow'ですか? – ggdx

+0

私は何が間違っているのか分かりません。 'dd($ request、$ vCode);'要求を介して送られてきたものを見て、 '$ vCode'に割り当てようとしています –

答えて

0

$request->only('vcode')はそれだけで一つの要素との連想配列を返します。 はここに私のコードです。あなたはonly()コールに3つのことを持っていたい場合

、あなたの結果がされている可能性があります

$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 
} 
+0

ありがとうございました! – Stackingcoder

0

1つのアイテムの通常の通話input()を使用します。$vCode = $request->input('vcode');、配列を返しますonly()

また、==を文字列比較に使用しないでください。===を使用してください。

関連する問題