【发布时间】:2015-08-24 15:57:56
【问题描述】:
蛋糕 2.0 版
我正在做一个 cakePHP 项目,但我无法让验证功能正常工作。
我通过订单控制器向支付表(模型)提交数据。
这是视图。
echo $this->Form->create("Payment",array("class"=>"payment"));
echo $this->Form->input("Payment.PaymentID");
echo $this->Form->input("Payment.OrderID",array("value"=>$order["Order"]["OrderID"],"type"=>"hidden"));
echo $this->Form->input("Payment.UserID",array("type"=>"hidden","value"=>$loggedInUserID));
echo $this->Form->input("Payment.TransactionTypeID",array("class"=>"transaction","options"=>$transactions,"label"=>"Transaction Type","empty"=>"Select Transaction Type"));
echo $this->Html->div("transactionType Phone");
echo $this->Form->input("Payment.NameOnCheck",array("class"=>"CheckBy Phone"));
echo $this->Form->input("Payment.CheckRoutingNumber");
echo $this->Form->input("Payment.CheckAccountNumber");
echo "</div>";
echo $this->Html->div("transactionType CreditCard clearfix");
echo $this->Form->input("Payment.CreditCardNumber",array("label"=>"Card Number"));
echo $this->Form->input("CreditCardExpirationMonth",array("label"=>"Expiration Date","options"=>$months));
echo $this->Form->input("CreditCardExpirationYear",array("label"=>" ","options"=>$years));
echo $this->Form->input("Payment.CreditCardExpirationDate",array("type"=>"hidden"));
echo $this->Form->input("Payment.CreditCardCVV",array("label"=>"CVV (not required)","class"=>"noCharge"));
echo $this->Form->input("Payment.CreditCardStreet",array("label"=>"Street Address on Card (not required)","class"=>"noCharge"));
echo $this->Form->input("Payment.CreditCardZipCode",array("Zip Code","class"=>"noCharge"));
echo "</div>";
echo $this->Html->div("transactionType AmountPaid clearfix");
echo $this->Form->input("Payment.PaymentAmount",array("label"=>"Amount Paid"));
echo $this->Form->input("Pay In Full",array("type"=>"button","label"=>" "));
echo "</div>";
echo $this->Html->div("transactionType RefundAmount");
echo $this->Form->input("RefundAmount",array("label"=>"Amount To Refund"));
echo "</div>";
echo $this->Form->end("Complete Transaction");
控制器
$this->Order->Payment->set($this->request->data);
if($this->request->is("post") || $this->request->is("put")) {
if($this->Order->Payment->save($this->request->data)){
$this->Session->setFlash("Payment Added");
//$this->redirect("add_payment/$id");
}
}
支付模式
class Payment extends AppModel{
public $useTable = "Payment";
public $primaryKey = "PaymentID";
public $belongsTo = array(
"TransactionType"=>array(
"foreignKey"=>"TransactionTypeID"
)
);
public $validate = array(
"NameOnCheck" => array(
"rule" => "notBlank"
)
);
其中一个问题是,每当我在 NameOnCheck 字段中提交带有数据的表单时,它都会给我一个错误,说它是空白的。
它也没有考虑到我设置的所有验证。当我对 CheckRoutingNumber 的长度进行验证时,它只是忽略它,只给我一个 NameOnCheck 错误(无论是否填写)。
我也在顶部收到此警告,两次:
preg_match():分隔符不能是字母数字或反斜杠 [CORE/Cake/Model/Model.php,第 3198 行]
有没有人有解决方案,任何帮助将不胜感激! 谢谢!
【问题讨论】:
-
您使用非标准字段名称是否有原因?不确定这是否与它有关,但是 - 需要调查。
-
@drmonkeyninja 你的回答可能基本上是正确的,因为
notBlank是在 2.7 中首次引入的,并且 OP 没有指定使用的版本。话虽如此,OP,请始终提及您正在使用的确切 CakePHP 版本! -
@ndm 我相信是 2.0 版,
-
@drmonkeyninja 非标准字段名称是什么意思?您是指符合蛋糕约定的字段名称吗?我正在做一个已经开始的项目
-
2.0只是一个分支,确切的版本号是x.x.x格式,例如可以在lib\Cake\VERSION.txt中找到。还有第一条评论来自@Dave,我刚刚添加了 drmonkeyninja,因为他发布了一个答案,但删除了它;)
标签: php sql-server cakephp cakephp-2.0 cakephp-2.1