- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常奇怪的问题,我似乎无法弄清楚或理解。所以基本上我有一个获取通过 Codeigniter URI 传递的 ID,让它填充一个隐藏的表单,然后提交。但是,当我以隐藏形式提交表单时,它返回说数据为 NULL。我已经尝试将其更改为 form_input 并且工作正常。谁能帮助我或向我解释为什么会这样?
我尝试了以下解决方案。
网址
http://localhost/list/players/add/1/
我希望 URI 3 ('1') 传递到表单并提交。
解决方案 1 - 让 URI 直接传递给数据数组
Controller
function add() {
if($this->form_validation->run() == FALSE) {
$data['view_file'] = 'add';
$this->load->module('template');
$this->template->cmslayout($data);
} else {
$league_id = $this->uri->segment(3);
$data = array(
'leagues_id' => $league_id,
);
if($this->_insert($data)){
return $query;
}
redirect ('/players/');
}
}
解决方案 2 - 获取 URI 并填写隐藏表单
Controller
function add() {
$league_id = $this->uri->segment(3);
$this->load->module('leagues');
$data['leagues_list'] = $this->leagues->get_where($league_id);
if($this->form_validation->run() == FALSE) {
$data['view_file'] = 'add';
$this->load->module('template');
$this->template->cmslayout($data);
} else {
$data = array(
'leagues_id' => $this->input->post('leagues_id'),
);
if($this->_insert($data)){
return $query;
}
redirect ('/players/');
}
}
查看
<?php
echo form_open('players/add/');
?>
<?php
echo "<br>";
echo "<br>";
echo "League Name";
echo "<br>";
foreach ($leagues_list->result() as $row) {
$league_id = $row->id;
$league_name = $row->league_name;
echo $league_name;
$data = array( 'name' => 'leagues_id',
'value' => $league_id,
);
echo form_hidden($data);
}
echo "<br>";
echo "<br>";
$data = array( 'value' => 'Set Player',
'name' => 'submit',
'class' => 'submit-btn',
);
echo form_submit($data);
echo form_close();
?>
在这两种情况下,提交时都会返回一个错误,指出 leagues_id 为 NULL。现在,我已尝试在解决方案 2 中将“form_hidden”更改为“form_input”,然后立即单击“提交”,效果很好。
谁能帮助我或告诉我为什么会这样?
非常感谢。
最佳答案
如果你想给 Controller 的函数添加一个参数,你必须将它添加到:function func($parameter = 0)
(= 0 是可选的默认值)。在这种情况下,您可以通过 $parameter
访问参数。
在您的 View 文件中,您可以打开您的表单以发布到当前 url。为此,您需要在 Controller 中加载 url 帮助程序:$this->load->helper('url');
(或者您可以在 application/autoload.php 中自动加载它)。
您的 form_hidden 声明也很糟糕。如果你想用 array() 声明它,那么你必须使用这个语法:
$data = array(
'name' => 'John Doe',
'email' => 'john@example.com'
);
echo form_hidden($data);
// Would produce:
<input type="hidden" name="name" value="John Doe" />
<input type="hidden" name="email" value="john@example.com" />
有关表单助手的更多信息:https://ellislab.com/codeigniter/user-guide/helpers/form_helper.html
要获得正确的解决方案,请尝试以下操作:
Controller
function add($league_id = 0)
{
if($league_id != 0)
{
$this->load->module('leagues');
$data['leagues_list'] = $this->leagues->get_where($league_id);
if($this->form_validation->run() == FALSE)
{
$data['view_file'] = 'add';
$this->load->module('template');
$this->template->cmslayout($data);
}
else
{
$data = array(
'leagues_id' => $this->input->post('leagues_id'),
);
if($this->_insert($data))
{
return $query;
}
redirect ('/players/');
}
}
查看
<?php
echo form_open(current_url());
echo "<br /><br />";
echo "League Name <br />";
foreach ($leagues_list->result() as $row)
{
$league_id = $row->id;
$league_name = $row->league_name;
echo $league_name;
echo form_hidden('leagues_id', $league_id);
}
echo "<br /><br />";
$data = array(
'value' => 'Set Player',
'name' => 'submit',
'class' => 'submit-btn'
);
echo form_submit($data);
echo form_close();
?>
关于php - Codeigniter 隐藏窗体变为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36785247/
对于一个科学实验,我写了一个turtle.py ,它会打开一个 800x480 的窗口并绘制一个缓慢增长的黑点。 turtle.py以 C:\Users\kaza>python C:\Users\ka
我开发了一个 swing 应用程序,但每次运行应用程序时都会打开一个新窗口。我希望如果一个窗口已经打开,则其他窗口不允许打开。 最佳答案 Here是一个 Java 单一应用实例的例子: A singl
有没有办法检测主进程中 Electron 的结构? process.platform 似乎也在 x64 机器上返回 win32,我没有在文档中找到任何获取架构的选项。 最佳答案 你试过 process
public short[] HanningWindow(short[] signal_in ,int pos ,int size) { for (int i= pos; i < pos+si
我有一个具有这些属性的 Electron 窗口: mainWindow = new BrowserWindow({ width: 800, height: 600, title: "Aqu
我有一个 Ubuntu 工作站,我正在尝试引导一个 Windows 节点。 Windows 节点在端口 2222 上打开了 ssh。我一直在关注 http://docs.opscode.com/plu
我是一名优秀的程序员,十分优秀!