У меня есть почтовая php-форма и набор входов:
Каждый вход выглядит одинаково, меняются только имена:
<input type="text" name="your_name" value="<?php echo get_option('your_name'); ?>" />
Как установить значения по умолчанию, когда значение = недоступно?
[редактировать]
Итак, обычно я бы сделал что-то вроде:
<input type="text" name="your_name" value="Mike" />
Но в этом случае у меня есть PHP-скрипт, который захватывает входные данные и отображает их с помощью value="<?php echo get_option('your_name'); ?>"
. Поэтому я не знаю, как заставить мою форму отображать «Майк» на моем входе.
Сначала нужно проверить возврат get_option и заменить что-то, если по умолчанию недоступно
<?php $default = get_option('your_name'); if( $default == "") { $default = <whatever your default value is>; } ?> <input type="text" name="your_name" value="<?php echo $default; ?>" />
Измените get_option, чтобы вернуть пустую строку (или что-то еще), если значение по умолчанию недоступно.
вы можете изменить get_option()
чтобы быть чем-то вроде
function get_option($name) { $defaults = array( 'fist_name' => 'Mike', 'fist_name' => 'Wordpressor', 'my_name' => 'Dunno' ); // get the value from the $defaults array $val = $defaults[$name]; // but if the same value has already been posted - replace the default one if (isset($_POST[$name])) { $val = $_POST[$name]; } return $val; }
Поскольку value
является value
по умолчанию, просто добавьте условие вокруг функции get_option
, возможно, что-то вроде этого:
<input type="text" name="your_name" value="<?php $var = get_option('your_name'); if ($var == '') $var = 'your_default'; echo $var; ?>" />
Вы можете сделать оператор switch и по умолчанию быть тем, кем хотите.
Я согласен с Тенеффом, но я сломаю его.
В index.php у меня было бы следующее в верхней части документа
<? $defaultText = include 'default_text.php'; ?>
где ваши формы будут такими:
<form method="post" action=""> <input id="names"><? echo $defaultText; ?> </input> </form>
то у меня был бы отдельный файл на корневом уровне под названием «default_text.php».
<? $Name = <<<EOD Name EOD; return $Name; ?>
<input type="text" name="your_name" value="<?php echo empty(get_option('your_name')) ? "TheDefaultValue" : get_option('your_name'); ?>" />
Вы можете использовать мою крошечную библиотеку ValueResolver в этом случае, например:
$default = ValueResolver::resolve(get_option('your_name'), '<whatever your default value is>');
и не забывайте использовать использование пространства имен use LapaLabs\ValueResolver\Resolver\ValueResolver;
Также есть возможность приведения типов, например, если значение переменной должно быть integer
, поэтому используйте это:
$id = ValueResolver::toInteger('6 apples', 1); // returns 6 $id = ValueResolver::toInteger('There are no apples', 1); // returns 1 (used default value)
Проверьте документы для получения дополнительных примеров.
Это как я решил эту проблему в своей проблеме, которая, как мне кажется, схожа, когда читается $ _POST, значение заполняется из значения $ _POST, иначе задает значение по умолчанию Майка
value="<?php if (isset($_POST['name'])) echo $_POST['name']; else echo "Mike"?>" >
Надеюсь, это поможет кому-то в будущем
Просто используйте тернарный оператор. его довольно легко попробовать это
$default = 'Mike'; $your_name = get_option('your_name'); $condition = !empty($your_name) ? $your_name : $default; <input type="text" name="your_name" value="<?php echo $condition; ?>" />
Задайте некоторую переменную с начальными переменными.
как
$name_val = ""; if(isset($_POST["your_name"]) { $name_val = $_POST["your_name"]; } <input type="text" name="your_name" value="<?= $name_val?>">