2016-09-07 6 views
0

ブール値を返すためにこのコードを処理していますが、foreachステートメントの行を検索すると、変数がtrueまたはfalseで上書きされます。しかし、私はそれを私のビューファイルに渡しても値は取られません/表示されます。なぜこれが起こっているのか、どうすれば正常にブール値を渡すことができますか?変数がブール値を返さないyii 2

ビューファイル

echo TestController::Showprerequisites(29005); 

モデル

$validator; 

foreach($prereq as $values){ 

if(FinishedSubjects::find()->where(['subjectname' => $values['col']])->exists()){ 
    $validator = true; 
} else { 
    $validator = false; 
} 

} 

return $validator; 

コントローラ

public function Showprerequisites($trno){ 
     $model = new TestModel(); 
     return $model->Showprerequisites($trno); 
    } 

EDIT ビュー更新

$preq = TestController::Showprerequisites(29005); 

if($preq = true){ 
    echo 'Pre requites completed/read'; 
} else if($preq = false) { 
    echo 'Pre requisites not completed/not read'; 
} 
+0

あなたが偽エコー '試してみました;' '真エコー;'? –

+1

おそらく、foreachには入っていないでしょうか? –

+0

$ validatorの値がfalseの場合、エコーすると画面に何も表示されませんが、trueの場合、エコー$ validatorがブラウザにtrueを表示します –

答えて

1

コードに論理的なエラーがあり、if条件で値を割り当ててチェックしている場合、常にtrueを返します。これに代えて

if($preq = true){ 

あなたもこの方法を確認することができます。

if($preq){ // if $preq is true then this line will work. 
関連する問題