проверка cakePHP вообще не работает

торт версия 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]

У кого-нибудь есть решение для этого, любая помощь будет оценена!
Спасибо!

1

Решение

Если вы не определили это в другом месте правило notBlank должно быть notEmpty чтобы сделать поле обязательным (для CakePHP ниже 2.7, как в вашем случае): —

public $validate = array(
"NameOnCheck" => array(
"rule" => "notEmpty")
);

Торт дает вам сообщение об ошибке preg_match(): Delimiter must not be alphanumeric or backslash так как notBlank не является определенным правилом в вашем приложении, поэтому рассматривает его как пользовательское правило регулярного выражения.

Как говорит Дейв в своем комментарии к CakePHP 2.7+, вы должны использовать notBlank,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]