Я пишу простую страницу игры. мой Controller
Метод выглядит так:
$model = new Game143();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$model->verifyAnswers();
return $this->render('Game143-confirm', ['model' => $model]);
} else {
$model->initGame(1, 2);
return $this->render('Game143', ['model' => $model]);
}
else
это важный бит. initGame
Метод прошел начальный уровень и максимальное количество уровней, поэтому я повторяю 2 раза со случайными цифрами, и все работает отлично.
В моем методе init я установил значение:
public function initGame($level, $numEx) {
$this->maxLevel = $numEx; // normally 10
$this->thisLevel = $level; //normally 1
Я также сделал некоторые выводы. Это отлично работает, и моя переменная сохраняется как 2
,
в if
метод контроллера моя переменная вдруг установлена на NULL
?!
Из-за этого даже мои результаты NULL
потому что моя итерация <=maxLevel
, Кто-нибудь знает, почему это происходит?
В verifyAnswers();
мой заданный и инициализированный maxLevel NULL
,
Итерация невозможна:
for(; $this->thisLevel <= $this->maxLevel; $this->thisLevel++) {
Если я жестко maxLevel
все отлично работает тоже.
По мнению (Работа с yii-2):
for($model->thisLevel = 1; $model->thisLevel <= $model->maxLevel; $model->thisLevel++) {
$out .= "\n";
$out .= Html::activeHiddenInput($model,"digit1[$model->thisLevel]");
$out .= "\n";
$out .= Html::activeHiddenInput($model,"digit2[$model->thisLevel]");
$out .= "\n";
$out .= "\n";
$out .= "<h3>Level $model->thisLevel</h3>\n";
$out .= "<h3>max $model->maxLevel</h3>\n";
$out .= "\n";
$out .= "<div class=\"row aufgabenFeld\">";
$out .= "<div align=\"right\" class=\"col-lg-4 col-md-4 col-xs-4 wallLabel \">";
$out .= $model->digit1[$model->thisLevel];
$out .= "</div>";
$out.="<div id='myField__<?php echo $model->thisLevel; ?>' class=\"col-lg-2 col-md-2 col-xs-2 wall\">\n";
$out .= $form->field($model, "proposal[$model->thisLevel]")->label(false);
$out .= "</div>";
$out .= "<div align=\"left\" class=\"col-lg-4 col-md-4 col-xs-4 wallLabel \">"; //id test xD
$out .= $model->digit2[$model->thisLevel];
$out .= "</div>";
$out .= "</div>";
$out .= "<div><br></div>";
В ‘submitView’:
foreach ($model->proposal as $key=>$value){
$out .= "<li><h4>Aufgabe $key</h4>";
$out .= $model->digit1[$key];
$out .= " ";
$out .= $model->proposal[$key];
$out .= " ";
$out .= $model->digit2[$key];
$out .= $model->maxLevel[$key];
$out .= "</li>";
}
Задача ещё не решена.
Других решений пока нет …