Я озадачен следующим кодом:
<b><i>First name *</b></i> : <input type="text"
name='<?php Labels::$FIRSTNAMELABEL ?>' /><br />
Это поле «Имя» является одним из нескольких входных данных в форме на моей странице.
Метки: $ FIRSTNAMELABEL устанавливается в определении класса на «FirstName».
Вот определение класса:
class Labels {
static public $FIRSTNAMELABEL = "FirstName";
// other static class members here for last name, phone #, etc.
}
Когда в моем браузере появляется форма, я сбрасываю исходный код страницы и получаю вот что:
<form action="AddPerson.php" method="post">
<b><i>First name *</b></i> : <input type="text"
name='' /><br />
Вы заметите, что name = '' пусто. Это должно сказать name = "FirstName" там, в источнике страницы. Не быть пустым.
Я пробовал: одинарные кавычки, двойные кавычки, пробелы, без пробелов вокруг блока php и внутри блока php вокруг меток :: $ FIRSTNAMELABEL - без изменений. Когда форма отображается и я выгружаю исходный код страницы, я всегда получаю имя = (пусто).
Я обнаружил это с помощью следующей строки кода:
if( isset( $_POST[Labels::$FIRSTNAMELABEL])
isset всегда возвращает false, поэтому я выполнил дамп страницы и выяснил, почему - когда форма отправляется, в ней нет поля имени с именем «FirstName».
Забавно, у меня была эта форма внутри heredoc, и она работала нормально - вот часть формы в моем heredoc:
<?php
// this was successfully displaying a 'name=' field on the form set to the
// static class label called Labels::$FIRSTNAMELABEL -- ie. the 'name' field
// in the page source was name="FirstName"
function showAddContactForm()
{
$firstNameLabel = Labels::$FIRSTNAMELABEL;
// other field names not shown.....
echo <<<_END
<form action="AddContact.php" method="post">
<b><i>First name *</b></i> : <input type="text" name=$firstNameLabel /><br />
// other fields on the form not shown..
</form>
_END;
}
?>
Почему мое поле 'name =' всегда пустое?