Php codeigniter-表单未返回任何数据

Php codeigniter-表单未返回任何数据,php,forms,codeigniter,post,Php,Forms,Codeigniter,Post,我正在尝试使用ci创建带有表单的页面。 当我提交表单时,管理员说我没有提交的数据。 我看不出我的错误在哪里 以下是观点: <?php echo validation_errors(); ?> <?php echo form_open('widgets/search/'.$hardwaremodel.'/'.$objectid.'/'.$name.'/'.$fd); ?> <div class="form-group"> <label for="s

我正在尝试使用ci创建带有表单的页面。 当我提交表单时,管理员说我没有提交的数据。 我看不出我的错误在哪里

以下是观点:

<?php echo validation_errors(); ?>
<?php echo form_open('widgets/search/'.$hardwaremodel.'/'.$objectid.'/'.$name.'/'.$fd); ?>
<div class="form-group">
    <label for="search">Last 4 characters of address:</label>
    <input type="text" class="form-control" id="searchstring" placeholder="last 4 characters" size="4">
</div>          
 <button type="submit" class="btn btn-default">Search</button>
 <button type="cancel" class="btn btn-default">Cancel</button>
</form>
var_dump
的结果显示:

bool(false)
谢谢

编辑1

我还没有发布包含表单的整个HTML页面。。。但是我在创建表单之前,将URI中传递的一些字段显示为页面上的标题。希望澄清。。。 这会影响POST数据吗?为什么与此相关?

谢谢

表单元素由输入字段
搜索字符串
上缺少的name属性引用

加:


在您的输入字段上。

我建议您做几件事。首先,如果要在
form\u open
标记中包含其他变量,我会将这些变量添加到控制器中,并将它们作为URI字符串放入
form\u open
标记中。如果要回显验证错误,这将允许表单验证工作

另外,您应该在
input->post()
上调用一个名称来获取特定的项目(但不需要获取所有的post数据)

控制器:

public function search($hardwaremodel, $objectid, $name, $fd) {
    $searchstring = $this->input->post('search_string'); // form data
    var_dump($searchstring);
    exit;    
}
<?php echo form_open('widgets/search/'.$this->uri->segment(3).'/'.$this->uri->segment(4).'/'.$this->uri->segment(5).'/'.$this->uri->segment(6)); ?>
<div class="form-group">
    <label for="search">Last 4 characters of address:</label>
    <input type="text" class="form-control" id="search string" name="search_string" placeholder="last 4 characters" size="4">
</div>       
查看:

public function search($hardwaremodel, $objectid, $name, $fd) {
    $searchstring = $this->input->post('search_string'); // form data
    var_dump($searchstring);
    exit;    
}
<?php echo form_open('widgets/search/'.$this->uri->segment(3).'/'.$this->uri->segment(4).'/'.$this->uri->segment(5).'/'.$this->uri->segment(6)); ?>
<div class="form-group">
    <label for="search">Last 4 characters of address:</label>
    <input type="text" class="form-control" id="search string" name="search_string" placeholder="last 4 characters" size="4">
</div>       

地址的最后4个字符:

在此代码中,您没有使用
名称
属性。您使用的是id。 试试这个

<input type="text" name="searchstring" value="xyz">


我在url中看不到控制器名称。您使用CI路由吗?控制器名称为“widget”,它是通过调用form_open自动创建的。我希望我理解了你的问题…为什么你的URL中有这个
/205406zl/5461/SW-1/SW1net
。你没有在你的控制器内对它们做任何事情你在表单中添加这些变量是出于某种原因吗?我没有看到任何关于它的用途的内容。@CraineRunton请看我的编辑1。在CI 2.1.4中,如果你想收集所有帖子,你不必调用
名称。@Craine:这与CI无关,不管它是什么版本。HTML中缺少某些内容。@hsuk抱歉,您是对的。我的意思是,如果调用
$this->input->post()
而不使用
name
属性,将返回所有的post项目。我忘记了如果没有
name
属性,表单项将永远不会被发布。我很抱歉,Craine,我最初在post数据中寻找一个特定的变量名,但是。。出于调试目的,我更改了var dump语句,只是为了打印所有内容,以查看发生了什么。但是+1表示您的评论没有问题。我知道我忘了在自己面前写上名字。
<input type="text" name="searchstring" value="xyz">