У меня есть класс PHP под названием ResetPassword. Внутри этого класса есть переключатель, который будет возвращать другую строку, содержащую требуемый HTML.PHP-переключатель не работает должным образом
Это ниже код (я опустил несколько случаев для краткости, есть также случай, по умолчанию, которое возвращает NULL)
public function get_display_block($displayblock) {
switch ($displayblock) {
case 'EnterNewPassword':
$displayblock = '
<form action="resetpassword.php" method="post">
<fieldset class="login">
<legend>Enter your information in the form below to reset your password: </legend>
<div><label for="password1">Password :</label>
<p><input type="password" name="password1" size="40" maxlength="60" /></p> </div>
<div><label for="password2"><span class="required">*</span>Retype Password :</label>
<p><input type="password" name="password2" size="40" maxlength="60" /></p> </div>
<br />
</fieldset><br />
<br />
<div align="center"><input type="submit" name="submit" value="Submit My Information!" \></div>
</form>
';
return $displayblock;
break;
case 'THIS_ISNT_WORKING':
$displayblock = '
<form action="changepassword.php" method="post">
<fieldset class="login">
<legend>Enter your information in the form below to reset your password: </legend>
<div><label for="password1">Old Password : </label>
<p><input type="password" name="oldpassword" size="40" maxlength="60" /></p> </div>
<div><label for="password1">New Password :</label>
<p><input type="password" name="password1" size="40" maxlength="60" /></p> </div>
<div><label for="password2"><span class="required">*</span>Retype New Password :</label>
<p><input type="password" name="password2" size="40" maxlength="60" /></p> </div>
<br />
</fieldset><br />
<br />
<div align="center"><input type="submit" name="submit" value="Submit My Information!" \></div>
</form>
';
return $displayblock;
break;
} // end of switch
} //end of method
При вызове класса/переключатель на моем основном страница, ниже код работает нормально.
$reset = new ResetPassword();
$displayblock = $reset->get_display_block('EnterSecretAnswer');
Однако при попытке вызвать THIS_ISNT_WORKING ничего не отображается. var_dump на $ displayblock возвращает NULL.
$reset = new ResetPassword();
$displayblock = $reset->get_display_block('THIS_ISNT_WORKING');
var_dump($displayblock);
Если я вызываю любой из других случаев (ранее пропущенных), он возвращает требуемый HTML.
Может ли кто-нибудь увидеть то, что мне не хватает здесь? Любая помощь, как обычно, будет принята с благодарностью.
EDIT: Я обновил переключатель, как указано ниже, чтобы оператор возврата находился за пределами коммутатора. Конечный результат все тот же. Я также изменил случай по умолчанию, чтобы вернуть строку («abcd»), чтобы убедиться, что случай по умолчанию не был вызван, и это не было. Все еще возвращается NULL.
Также вы должны отделить свой html от своей основной логики. Используйте метод класса шаблона для загрузки блока html. –
Ваш образец кода [работает для меня] (http://codepad.viper-7.com/4qGHyq). – nickb
Ваш пример кода работает нормально, только проблема с функцией, которую я должен исправить, чтобы запустить ее, - get_display_block - мне нужно закрыть функцию дополнительной фигурной скобкой «}». – Dharmavir