我在视图页面中创建了一个输入字段,如
<div class="input text">
<label for="2">First Name (required) </label>
<input type="text" value="" style="width: 300px;" id="2" class="required" name="First Name"/>
</div>
<div class="input text">
<label for="5">Emailid</label>
<input type="text" value="" style="width: 300px;" id="5" name="Emailid"/><
/div>
<div class="input text">
<label for="6">Mobile Number</label>
<input type="text" value="" style="width: 30px;" id="6" name="Mobile Number"/>
<input type="text" value="" style="width: 30px;" id="6-1" name="Mobile Number"/>
<input type="text" value="" style="width: 70px;" id="6-2" name="Mobile Number"/>
</div>
这些都是在Page中生成的。我正在使用
在CakePHp控制器中从此页面检索内容值 foreach ($_POST as $key => $value):
echo $key;echo $value;
endforeach;
对于以上所有字段,我得到的答案都是正确的 First_Name = A&amp; Emailid = aruna@tcs.com&amp; Mobile_Number = 3
但是对于我的手机号码字段,我得到的最后一个id的值就像6-2。为什么呢?请求检索三个字段中给出的手机号码的全部值(6,6-1,6-2)??请建议我。
编辑:
foreach ($_POST as $key => $value):
$mobile_number = implode('', $_POST['number']);
echo $mobile_number;
$this->data['Result']['form_id']=$formid;
$this->data['Result']['label']=Inflector::humanize($key);
$this->data['Result']['value']=$value;
$this->Form->submitForm($this->data);
endforeach;
我正在使用如上所述保存密钥及其值(即..,控制器不知道填充页面中的所有字段是什么)。填充可能/可能不包含字段电话号码。如何确保该页面具有Phonenumber字段并使用其密钥保存其值。
注意:$ key是Fieldname,$ value是我的字段值。仅对于Phonenumber字段,值是数组,在所有其他情况下,它只是一个值。
答案 0 :(得分:2)
如果您正在使用Cake,那么您真的应该学习并使用Cake。
快速破解Cake中的流程:
Form page -> Submit
^ |
| v
| Controller // Form data is in $this->data
| |
| v
| $this->Model->save($this->data); -> Model
| |
| v
-------- Controller <----------------------- Data validation
validation no good |
| validation okay
v
Controller <----------------------- Actually save data
|
v
Go somewhere else
这对您意味着什么:
$this->data
是表单正常工作的核心。 请勿触摸$ _POST! 使用Cake methods for creating Forms并使用与数据库中使用的字段相同的名称。这有利于很多蛋糕“自动化”。你没有手工组装一个数组来传递给数据库,你从头到尾使用相同的名称,只是传递数组。 $this->data
将自动从Controller传递回View(即表单),如果您使用Cake FormHelper,字段将自动从中填充。
您应该尽量减少提交表单和保存数据之间的工作。理想情况下,您的控制器只是这样:
if (!empty($this->data)) {
if ($this->Model->save($this->data)) {
$this->redirect(array('action' => 'next_step'));
}
}
这就是你需要的所有代码,它将
如果您的表单字段与数据库字段不对应,请仅调整if(!empty($this->data))
和$this->Model->save($this->data)
之间所需的位:
if (!empty($this->data)) {
$this->data['Model']['mobile_number'] = implode('-', $this->data['Model']['mobile_number']);
if ($this->Model->save($this->data)) {
$this->redirect(array('action' => 'next_step'));
}
}
如果您要验证提交的表单数据的完整性,则只需fill in the appropriate rules in the Model。每当您发出$this->Model->save()
时,模型会在保存前自动检查规则,如果不符合则会return false
。