在php中从表单中选择对象
好的,我有一个下拉菜单,用户应该在其中选择php项目中其他地方定义的对象。我尝试了以下方法:在php中从表单中选择对象,php,forms,class,object,Php,Forms,Class,Object,好的,我有一个下拉菜单,用户应该在其中选择php项目中其他地方定义的对象。我尝试了以下方法: <form method="post"> <select name="ball"> <option name="red" value=?>Red Ball</option> <option name="blue" value=?>Blue Ball</option> </sele
<form method="post">
<select name="ball">
<option name="red" value=?>Red Ball</option>
<option name="blue" value=?>Blue Ball</option>
</select>
<input type="submit">
</form>
我希望用户能够从下拉菜单中选择$redBall或$blueBall,但我不知道在选项部分中输入什么值。我试过了
value=$redBall
但那没用,有什么想法吗
编辑
我认为从目前的一些答案来看,我的问题有些混乱
我正在寻找一种将值设置为$redBall对象的方法,例如,在稍后的代码中,我将接受他们的选择并编写$\u POST['ball']->color。我不知道是否有更好的方法,但我正在使用的实际类有多个属性,我希望用户选择允许我像访问对象一样访问所有属性如果需要精确编辑值,请执行以下操作:
<form method="post">
<select name="ball">
<option name="red" value = '<?php echo $redball->color; ?>' > Red ball</option>
<option name="blue" value = '<?php echo $blueball->color; ?>' >Blue ball</option>
</select>
<input type="submit">
</form>
在课堂上
编辑:-问题要求通过选择控件发送完整对象-
Select元素只能发送文本,而对象通常不能用文本来描述。谢天谢地,我们做到了。JSON允许我们获取PHP对象并将其及其值转换为文本
我们必须将对象转换为JSON字符串,如下所示:
$blueJSON = json_encode($blueball);
$redJSON = json_encode($redball);
然后使选择的值部分等于这些新变量
<option name="red" value = '<?php echo $redJSON; ?>' > Red ball</option>
<option name="blue" value = '<?php echo $blueJSON; ?>' >Blue ball</option>
使用此方法可以发送任何对象,而无需在函数开始时预定义对象。在处理用户输入时非常有用
警告:
我通常将JSON值传递给javascript,因为发送这样的对象并不常见。我不完全确定你的结果会是什么,但希望这对你有用。你可以这样写下来:-
<form method="post">
<select name="ball">
<option name="red" value="<?=$redBall->getColor();?>">Red Ball</option>
<option name="blue" value="<?=$blueBall->getColor();?>">Blue Ball</option>
</select>
<input type="submit">
</form>
根据您在另一个答案中的评论,尝试执行以下操作:
class Ball {
var $color;
public function __construct($color) {
$this->color=$color;
}
public function getColor() {
return $this->color;
}
}
$balls = array(
"red" => new Ball("red"),
"blue" => new Ball("blue")
);
您的表单应该如下所示
<form method="post">
<select name="ball">
<option value="red">Red Ball</option>
<option value="blue">Blue Ball</option>
</select>
<input type="submit">
</form>
您真的需要option元素的name属性吗?把名字改成值,你会用另一个球吗?如果没有,为什么首先要创建两个呢$值=新球$_POST['Ball'];如果你想将可以使用的颜色限制在一个给定的集合中,那么首先使用这些颜色的数组进行检查。谢谢,但我认为你误解了这个问题。我正在寻找一种将值设置为$redBall对象的方法,例如,在稍后的代码中,我将接受他们的选择并编写$\u POST['ball']->color。我不知道是否有更好的方法可以做到这一点,但我正在使用的实际类有多个属性,我希望用户选择允许我像访问对象一样访问所有属性。我现在明白你的意思了。我道歉。我会更新我的答案。
<form method="post">
<select name="ball">
<option name="red" value="<?=$redBall->getColor();?>">Red Ball</option>
<option name="blue" value="<?=$blueBall->getColor();?>">Blue Ball</option>
</select>
<input type="submit">
</form>
class Ball {
var $color;
public function __construct($color) {
$this->color=$color;
}
public function getColor() {
return $this->color;
}
}
$balls = array(
"red" => new Ball("red"),
"blue" => new Ball("blue")
);
<form method="post">
<select name="ball">
<option value="red">Red Ball</option>
<option value="blue">Blue Ball</option>
</select>
<input type="submit">
</form>
$selectedBall = $balls[$_POST["ball"]];
echo $selectedBall->getColor();