Поведение Cakephp Revision препятствует ошибке валидации? - PullRequest
0 голосов
/ 21 января 2012

У меня есть приложение для оформления билетов CakePHP, в котором я использую Поведение редакции для хранения истории редакций каждой заявки. Проблема, с которой я сталкиваюсь, заключается в том, что она не отображает сообщения об ошибках валидации. Вот строка, которую я добавил в модель.

public $actsAs = array('Revision' => array('limit'=>10));

Когда я комментирую эту строку, она отображает сообщения об ошибках, а иначе - нет. Кроме того, когда я отлаживаю его с помощью x-debug, я вижу, что переменная validationErrors установлена ​​и все значения сообщений об ошибках установлены правильно.

Пожалуйста, пролите немного света здесь.

Редактировать: я использую торт 2.1

Ответы [ 2 ]

4 голосов
/ 10 декабря 2012

Во-первых, убедитесь, что вы получили последнюю версию этого поведения: http://alkemann.googlecode.com/svn/trunk/models/behaviors/revision.php

для интеграции в CAKE 2.X проблема возникает из строки 980 в функции createShadowModel (): $ Model->ShadowModel-> alias = $ Model-> alias;

Поведение присваивает тот же псевдоним базовой модели и своей модели тени, которую он сохранит в таблице _revs, и, кажется, портит сообщения проверки.Проблема заключается в том, что это поведение загружается автоматически при доступе к вашей модели, и вызывается функция createShadowModel (), даже если ваш ввод не проверяется.Одним из решений было бы закомментировать эту строку из createShadowModel (), а затем добавить ее только к каждой функции в поведении, которое будет выполнять операцию в БД.Конечно, есть лучший способ, например, определить в setup (), что нужно идти дальше к инициализации, но не смог найти, как это сделать.Так что это мой первый шаг к тому, чтобы хотя бы позволить использовать это поведение в Cake 2.X.

1 голос
/ 21 января 2012

Есть несколько вещей, которые могут происходить здесь.Слишком много для того, чтобы просто рассказать вам, что происходит, потому что у нас нет вашего кода.Тем не менее, я почти уверен, что это поведение, поскольку оно было написано в 2008 году, будет иметь проблемы с CakePHP версии 2.1, которая только что выпустила свою первую альфа.В инфраструктуру Cake было внесено множество изменений, которые могут привести к тому, что это не сработает.Я бы сказал, что это, вероятно, будет работать с версией 1.3 и определенно с 1.2, но получение поддержки 2.1, вероятно, не произойдет без обновлений.

Тем не менее, это поведение, которое должно только изменить код модели.Таким образом, не должно быть никакого воздействия (теоретически) на ваш взгляд.Вы уверены, что используете в своем коде надлежащие условные обозначения для отображения ошибок (даже если их комментирование приводит к изменению отображаемых сообщений).

Я бы искал версию поведения, совместимую с 2.0+.Или вы можете скинуть код на Github и начать его портировать самостоятельно.Вы можете получить помощь от некоторых людей из Cake.

...