这是我的HTML代码:
<form method="POST" action=/posts>
{{csrf_field()}}
<div class="form-row">
<div class="form-group col-md-3">
<label for="inputAddress">Attendence Type</label>
<?php $op="AttendenceZero" ?>
<input type="text" class="form-control" id="inputPassword4" name="<?php $op ?>" >
</div>
</div>
这是我必须接收值的控制器:
class Employeeleavecontroller extends Controller
{
//
public function new()
{
$name =$_POST['op'];
echo $name;
}
}
答案 0 :(得分:0)
如果您希望收到$_POST['op']
,则表单中必须有name="op"
。
<?php $op ?>
几乎没有任何作用。但是,如果你添加echo:
name="<?php echo $op; ?>"
然后你可以收到它:
$_POST['AttendenceZero']
更新: 如果您仍然遇到问题,请检查您实际接收的内容:
<pre>
<?php var_dump($_POST); ?>
</pre>
最后,我没有看到你为名称使用变量的原因。如果您计划将其设置为动态,则无论如何都必须将动态名称发送到结束脚本,除非您按预先处理接收的数据,如下所示:
foreach ($_POST as $postName => $postValue) {
echo "Name: $postName ; Value: $postValue<br />";
}
更新2:
如果您真的希望让用户定义POST值的name
,您还需要将名称定义发送到结束脚本。您可以为此任务使用隐藏输入字段,因此请将其添加到表单中:
<input type="hidden" name="fieldName" value="<?php echo $op;?>">
然后在您的结束脚本中,您首先收到fieldName:
$fieldName = $_POST['fieldName'] //$op == "AttendenceZero" or whatever
并使用它来接收实际数据:
$actualData = $_POST[$fieldName];
但是,如果在构建表单后未定义$op
,则所有这些都毫无意义。如果是这样,那么你必须使用例如jQuery在发送表单时将$ op值添加到隐藏的输入字段。
答案 1 :(得分:0)
我想你想做这样的事情,
更改此行,
<input type="text" class="form-control" id="inputPassword4" name="<?php $op ?>" >
到
<input type="text" class="form-control" id="inputPassword4" name="any_name" value="<?php echo $op ?>" >
在您的控制器中
$name = $_POST['any_name'];
echo $name;
所以
$ name将返回AttendenceZero或任何用户定义的值。
答案 2 :(得分:0)
听起来很有意思...... 输入文本字段的名称是用户定义的(动态)。
有两种方法可以处理它。
1)使用隐藏字段。 (推荐)
2)转换为索引数组。
使用隐藏字段。
<form method="POST" action=/posts>
{{csrf_field()}}
<div class="form-row">
<div class="form-group col-md-3">
<label for="inputAddress">Attendence Type</label>
<?php $op="AttendenceZero" ?>
<input type="text" class="form-control" id="inputPassword4" name="<?php $op; ?>" >
<input type="hidden" name="op" value="<?php $op; ?>">
</div>
</div>
处理隐藏字段。
class Employeeleavecontroller extends Controller
{
//
public function new()
{
$name = $_POST[$_POST['op']];
echo $name;
}
}
转换为索引数组
<form method="POST" action=/posts>
{{csrf_field()}}
<div class="form-row">
<div class="form-group col-md-3">
<label for="inputAddress">Attendence Type</label>
<?php $op="AttendenceZero" ?>
<input type="text" class="form-control" id="inputPassword4" name="<?php $op; ?>" >
</div>
</div>
通过转换为索引数组来处理表单请求。
class Employeeleavecontroller extends Controller
{
//
public function new()
{
$req = array_values($_POST);
$name = $req[0]; //contain all form data so, find correct index number.
echo $name;
}
}
答案 3 :(得分:-1)
你需要两次改变
1: "<?php echo $op; ?>"
控制器中的
2: $name =$_POST['AttendenceZero'];
最后是它的工作