gpt4 book ai didi

PHP 表单单选按钮

转载 作者:搜寻专家 更新时间:2023-10-31 21:02:07 25 4
gpt4 key购买 nike

我想要做的就是生成一个表单,其中包含以下编码样式的文本输入字段和按钮。文本输入字段工作正常。但是,单选按钮类不是。单选按钮类应该有一个组标题,addOption 函数应该用单选按钮显示每个选项。当我测试我的代码时,没有标题“勺数”,只有一个单选按钮用于“三勺”而不是“一勺”和“两勺”。我究竟做错了什么?这是我的代码:

IceCreamForm.php:

<?php

require_once 'Form.php';
require_once 'RadioButton.php';
require_once 'TextInput.php';
require_once 'Validator.php';

$form = new Form();

$form -> addInput(new TextInput("First Name: ", "firstName"));
$form -> addInput(new TextInput("Last Name: ", "lastName"));
$form -> addInput(new TextInput("Ice Cream Flavor: ", "iceCreamFlavor"));

$radio = new RadioButton("Number of Scoops: ");
$radio -> addOption("One Scoop", "one");
$radio -> addOption("Two Scoops", "two");
$radio -> addOption("Three Scoops", "three");
$form -> addInput($radio);

echo $form -> generateHTML();

Form.php:

<?php

class Form
{
const GET = "GET";
const POST = "POST";
private $action = "someLocation.php";
private $inputs = array();
private $method = "POST";
public $form = "";
public $name = "";

function __construct()
{

}

function addInput(TextInput $input)
{
$this -> inputs[] = $input;
}

function getAction(): string
{
return $this -> action;
}

function getMethod(): string
{
return $this -> method;
}

function setAction(string $action)
{
$this -> action = $action;
return $this;
}

function setMethod(string $method)
{
$this -> method = $method;
return $this;
}

function set($param, $value)
{
$this -> $param = $value;
}

function generateHTML(): string
{
$this -> form = '<form action="' . $this -> getAction() . '"
method="' . $this -> getMethod() . '">';
foreach ($this -> inputs as $input)
{
$this -> form .= $input -> generateHTML();
}

$this -> form .= '</form>';

return $this -> form;
}
}

TextInput.php:

<?php

class TextInput
{
const TYPE = "text";
private static $REQUIRED = "REQUIRED";
private $defaultValue;
private $id;
private $label;
private $name;
private $onNewLine;
private $required = false;
private $type;

function __construct($label = "", $name = "", $defaultValue = "", $id = "", $onNewLine = "", $required = false, $type = self::TYPE)
{
$this -> defaultValue = $defaultValue;
$this -> id = $id;
$this -> label = $label;
$this -> name = $name;
$this -> onNewLine = $onNewLine;
$this -> required = $required;
$this -> type = $type;
}

public function generateHTML():string
{
$req = "";

if ($this -> required == true)
{
$req = self::$REQUIRED;
}

return "<label>$this->label</label><input id='$this->id' type='$this->type' name='$this->name' onNewLine='$this->onNewLine' $req/><br/>";
}
}

RadioButton.php:

<?php

require_once 'TextInput.php';

class RadioButton extends TextInput
{
const TYPE2 = "radio";
private $selected = false;
private $type;

function __construct($selected = false, $type = self::TYPE2)
{
$this -> selected = $selected;
$this -> type = $type;
}

function addOption(string $label, string $value)
{
$this -> label = $label;
$this -> value = $value;
}

public function generateHTML():string
{
$req = "";

if ($this -> required == true)
{
$req = self::$REQUIRED;
}

return "<label>$this->label</label><input id='$this->id' type='$this->type' value='$this->value' onNewLine='$this->onNewLine' $req/><br/>";
}
}

最佳答案

...there's no title "Number of Scoops"...

因为您的 RadioButton 构造函数没有设置标题。只有 $selected$type

...and only one radio button for "Three Scoops" and not for 
"One Scoop" and "Two Scoops."...

因为您的addOption 方法覆盖了之前设置的标签和值。尝试将它们添加到数组中。

function addOption(string $label, string $value) {
$this->options[] = [
'label' => $label,
'value' => $value,
];
}

然后在你的generateHTML()...

return join('', array_map(function($item) {
return sprintf('<label>%s</label> <input type="radio" value="%s">', $item['label'], $item['value']);
}, $this->options));

关于PHP 表单单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39950236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com