У меня есть форма, которая производит следующий массив при передаче (см. Ниже).
Я использую эти данные в моем контроллере для выполнения нескольких операций, после чего я сохраняю каждую в отдельности. (Сохранять их все сразу не вариант).
Что мне нужно сделать, это найти способ проверить каждую из этих моделей.
Я уже пробовал:
$this->Model->set($pertinentData);
$this->Model2->set($pertinentData);
if($this->Model->validates() && $this->Model2->validates()){
//Do whatever
}
Это дает неточные результаты, говорит, что проверяет, когда я вижу, что нет, и наоборот.
У кого-нибудь есть идея жизнеспособного варианта? Нет способа создать модель без таблиц, где я могу определить правила проверки для этих полей, например:
Order.package_id
User.first_name
etc...
Любая идея приветствуется. Ниже массива, который создает форма.
Благодарю.
Array
(
[Order] => Array
(
[id] => 15
[package_id] => 1743
[tariff_id] => 5470
[tarjeta] => 332
[numero_tarjeta] => 121204045050
[vencimiento_tarjeta] => 10/20
[cod_tarjeta] => 170
[titular_tarjeta] => JESUS CRISTO
[tarjeta_nacimiento] => 22/04/1988
[tarjeta_pais] => Argentina
[tarjeta_provincia] => Buenos Aires
[tarjeta_ciudad] => Ciudad
[tarjeta_cp] => 1428
[tarjeta_calle] => Calle
[tarjeta_numero] => 1477
[tarjeta_piso] => 2
)
[User] => Array
(
[id] =>
[email] => [email protected]
[phone] => 1568134449
[first_name] => Jesus
[last_name] => Something
[documento_tipo] => dni
[dni] => 335556666
[nacionalidad] => argentino
[birthdate] => 22/04/2019
)
[OrdersCompanion] => Array
(
[1] => Array
(
[first_name] => Chango
[last_name] => Mas
[documento_tipo] => dni
[dni] => 445556666
[nacionalidad] => argentino
[birthdate] => 30/02/2010
)
[1] => Array
(
[first_name] => Chango
[last_name] => Mas
[documento_tipo] => dni
[dni] => 445556666
[nacionalidad] => argentino
[birthdate] => 30/02/2010
)
)
)
Вы можете использовать модель без таблиц, определив $useTable= false
в модели. Как это
public $useTable = false;
Определите всю свою пользовательскую проверку и, конечно же, свою схему (так как в вашей модели нет таблицы, вы должны определить схему модели вручную). Затем в контроллере вы должны сначала указать, что у него нет модели, а затем объявить $model
переменная. Это сделано для того, чтобы избежать автоматической привязки модели к контроллеру cakePHP, ваш контроллер будет выглядеть так
public $useModel = false;
$model = ClassRegistry::init('ContactOperation');
Теперь ваша модель связана с вашим контроллером, как вы хотите, и вы можете легко сделать свою пользовательскую проверку, определенную ранее.
$model->set($this->request->data);
if($model->validates()) {
$this->Session->setFlash(_('Thank you!'));
// do email sending and possibly redirect
// elsewhere for now, scrub the form
// redirect to root '/'.
unset($this->request->data);
$this->redirect('/');
} else {
$this->Session->setFlash(_('Errors occurred.'));
// display the form with errors.
}
Вы можете найти более подробную информацию от Вот
Других решений пока нет …