当我将变量传递到$ _post []变量时,未定义的索引错误



这是我的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;
  }
}

如果要接收 $_POST['op'],则必须以表格中的 name="op"

<?php $op ?>几乎什么都不做。但是,如果您添加回声:

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值在发送表单时向隐藏的输入字段添加$ OP值。

听起来很有趣...就像 name 输入文本字段是用户定义的(Dynamic(。

有两种处理方法。

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;
  }
}

我想你想做这样的事情:

更改此行,

<input type="text" class="form-control" id="inputPassword4" name="<?php $op ?>" >

to

<input type="text" class="form-control" id="inputPassword4" name="any_name" value="<?php echo $op ?>" >

和您的控制器

$name = $_POST['any_name']; echo $name;

so

$名称将返回AdathenceZero或任何用户定义的值。

您需要进行两个更改

1:  "<?php echo $op; ?>"

在控制器中

2: $name =$_POST['AttendenceZero'];

最后它的工作

相关内容

  • 没有找到相关文章

最新更新