我想在cakephp中创建一个验证表单,我的代码形式为:
查看
<div class="well">
<?php
echo $this->Form->create(false);
echo $this->Form->input('name', array('label' => 'name '));
echo $this->Form->input('PHONE_NUMBER', array('label' => 'PHONE_NUMBER '));
echo $this->Form->input('EMAIL', array('label' => 'EMAIL '));
echo $this->Form->input('ISSUE', array('label' => 'ISSUE '));
echo $this->Form->input('IP', array('label' => 'IP '));
echo $this->Form->submit('Send.');
?>
控制器
<?php
class ContactController extends AppController {
public function index() {
if (empty($_POST) === FALSE) {
$message = '';
$message .=$_POST['data']['EMAIL'] . ' <br/>';
$message .=$_POST['data']['name'] . ' <br/>';
$message .=$_POST['data']['PHONE_NUMBER'] . ' <br/>';
$message .=$_POST['data']['ISSUE'] . ' <br/>';
$message .=$_SERVER['REMOTE_ADDR'] . ' <br/>';
mail('mohmed@lcegy.com', 'Support From Website ', $message);
$this->Session->setFlash("Thanks , an email just sent .");
}
}
}
我的问题是如何在此表单中实现验证以及如何获取访问者的IP地址?
答案 0 :(得分:0)
您可以通过设置规则从您的模型进行验证
public $validate =
array(
'Email' => array
(
'rule' => 'notempty'
),
);
答案 1 :(得分:0)
您可能希望更新index()函数以查找类似于此的内容:我认为它更像是cakePHP约定。
public function index() {
if ($this->request->is('post')) {
$message = '';
$message = $this->request->data['EMAIL'];
...
}
}
要进行验证,您可以将其添加到模型中。你可以做类似的事情:
public $validate = array(
'EMAIL' => 'email',
'name' => array(
'rule' => 'alphaNumeric',
'required' => true
)
);
有关更多验证,您可以查看文档:{{3}}
您可以使用$ _SERVER ['REMOTE_ADDR']来获取客户端的IP地址。
答案 2 :(得分:0)
按照上面给出的答案通过模型来做到这一点的最佳方式,但你也可以通过简单地添加属性&#34;要求&#34;来在视图页面上进行。并定义适当的类型,如电子邮件,数字。例如。在你的形式:
<?php
echo $this->Form->create(false);
echo $this->Form->input('name', array('label' => 'name ', 'required' => true));
echo $this->Form->input('PHONE_NUMBER', array('label' => 'PHONE_NUMBER ', 'required' => true,'type'=>'number'));
echo $this->Form->input('EMAIL', array('label' => 'EMAIL ', 'required' => true, 'type' => 'email'));
echo $this->Form->input('ISSUE', array('label' => 'ISSUE ', 'required' => true));
echo $this->Form->input('IP', array('label' => 'IP ', 'required' => true));
echo $this->Form->submit('Send.');
?>