2012-01-21 5 views
0

私はRevision Behaviorを使って各チケットの改訂履歴を保持するCakePHPチケット発行アプリケーションを持っています。この動作を使用している問題は、検証エラーメッセージが表示されないことです。ここに私がモデルに追加した線があります。Cakephpリビジョンの動作で検証エラーが発生しますか?

私はこの行にコメントするとエラーメッセージを表示し、そうでない場合は表示しません。また、x-debugを使用してデバッグすると、validationErrors変数が設定されていて、すべてのエラーメッセージ値が正しく設定されていることがわかります。

ここに若干の光を当ててください。

編集:私はここで起きている可能性があり、いくつかのものがありますケーキ2.1

答えて

1

を使用しています。私たちがあなたのコードを一切持っていないので、何が起こっているかを伝えるためには、あまりにも多くのことを伝えてください。しかし、2008年に書かれたこの動作はCakePHPバージョン2.1で最初のアルファをリリースしたばかりの問題があることは確かです。これが動作しなくなる可能性があるCakeのインフラストラクチャには、多くの変更がありました。私はこれがバージョン1.3とおそらく1.2で動作するだろうと言っているが、2.1に対するサポートを得ることはおそらくアップデートなしには起こらないだろう。

つまり、これはモデルコードを変更するだけの動作です。したがって、(理論的に)あなたの見解には影響しないはずです。エラーを表示するためにコード内に適切な規則を使用していますか(表示されたメッセージをコメントアウトしてもメッセージは表示されますが)。

私は2.0以上の互換性のあるバージョンの動作を探しています。あるいは、Githubにコードを投げて自分で移植することもできます。ケーキの人々から助けを得ることができます。 http://alkemann.googlecode.com/svn/trunk/models/behaviors/revision.php

CAKEの2.Xでの統合のため、問題は(createShadowModelにライン980から来ている)機能: $モデル - > ShadowModel-

+0

私は私の意見を焼き込みました。私は$ actasについてコメントするとうまくいきますので、通常のエラーはないと確信しています... – Mo3z

+0

あなたの意見は問題ではなく、動作は問題ありません。 CakePHP 2を使用していて、その動作が1. *のために書かれている場合、Cakeのコアで規約が変更されたため、動作しない可能性が高くなります。 –

+0

私は新しい規則に従ってすべての慣習を変更しました。私がフォームに正しく記入すると、保存が成功するとリビジョンが作成されます。つまり、その行動はうまくいく!しかし、検証エラーはうまくいきません.lol ... invalidFields()もエラーを返すものと推測します....とにかく..これを助けてくれたScottに感謝します。 – Mo3z

4

まず、この動作の最後のバージョンを取得するようにしてください>エイリアス= $モデル - >エイリアス;

この動作は、ベースモデルとそのシャドウモデルに同じエイリアスを与えます。このエイリアスは_revsテーブルに保存され、検証メッセージが壊れているようです。 問題は、モデルにアクセスするときにこの動作が自動的にロードされ、入力が検証されなくてもcreateShadowModel()関数が呼び出されるという点です。 解決策の1つは、createShadowModel()からこの行をコメント化し、それをDB内で操作を行うビヘイビアーのすべての関数にのみ追加することです。初期設定に進む必要があるが、それを行う方法が見つからない場合は、setup()で検出するような、より良い方法があります。これは少なくともCake 2.Xでこの動作を使用できるようにするための最初のステップです。

+0

[RevisionBehavior.php](https://github.com/dereuromark/tools/blob/master/Model/Behavior/RevisionBehavior.php)のいくつかのテストケースを含めて、提案された変更をPRできますか? – mark

+0

OKマーク、私はそれを見ます。 – Chris

関連する問題