gpt4 book ai didi

forms - CakePHP 中没有模型的简单表单

转载 作者:行者123 更新时间:2023-12-05 00:04:28 26 4
gpt4 key购买 nike

我正在尝试在产品页面中添加表单以请求附加信息。这是一个简单的表格,包含姓名、国家、电子邮件和问题字段。

我创建了这个 tutorial ,但我不喜欢仅仅为了小我需要制作新模型和 Controller 的想法。

所以我在 view.ctp 中添加了表单

print $this->Form->create('', array('action' => 'sendemail')); 
print $this->Form->input('name',array('label' => __('Name',true).':'));
print $this->Form->input('country',array('label' => __('Country',true).':'));
print $this->Form->input('email',array('label' => __('E-mail',true).':'));
print $this->Form->input('question',array('type' => 'textarea', 'label' => __('Your question',true).':'));
print $this->Form->end(__('Send', true));

并添加功能 sendemailproducts_controller.php
function sendemail(){          
if(!empty($this->data)){
if($this->data['Product']['name'] && $this->data['Product']['country'] && $this->data['Product']['email'] && $this->data['Product']['question']){
// sending email
$this->Session->setFlash(__('Thanks, your qustion was send.', true), 'default', array('class' => 'message status'));
$this->redirect($this->referer());
} else {
// validation
$this->Session->setFlash(__('Fill all fiels', true), 'default', array('class' => 'message error'));
$this->redirect($this->referer());
}
} else {
$this->Session->setFlash(__('Error occurred', true), 'default', array('class' => 'message error'));
$this->redirect($this->referer());
}
}

那么有什么方法可以正确验证表单,如果重定向后某些字段未填写,该字段将被设置为错误表单输入?另外,如何将所有已填写的字段设置回表单?

谢谢你的帮助!

最佳答案

您不需要数据库表,但 CakePHPs 的验证支持天生就与模型相关联。通过创建一个虚拟模型并将您的验证规则存储在其中,您的代码将比任何替代方法都干净得多。

要绕过使用表格,请添加 var $useTable = false;到您的模型定义。

要验证而不保存,请调用 $this->MyModel->set($this->data);然后调用$this->MyModel->validates()将执行检查并填充 $this->MyModel->validationErrors对于表单中的自动填充。

关于forms - CakePHP 中没有模型的简单表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5778489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com