如何在CakePHp控制器中检索Mobile Number字段值

时间:2009-07-16 03:59:12

标签: php html cakephp

我在视图页面中创建了一个输入字段,如

    <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字段,值是数组,在所有其他情况下,它只是一个值。

1 个答案:

答案 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