1

Cakephp のデータベース制約からモデルの検証ルールを自動的に生成する簡単なソリューションを探しています。たとえば、データベース内のフィールドに NOT NULL 制約がある場合、そのフィールドに対して「空でない」検証ルールを作成する必要があります。

では、このようなことができるツールはありますか?

4

2 に答える 2

3

CakePHP はデフォルトではこれをサポートしていませんが、私はこのアイデアが気に入っています。

ただし、AppModel::__construct() をオーバーロードし、 AppModel::beforeValidate() コールバックにコードを追加し、モデルが使用しているテーブルに CakeSchema を使用してスキーマをロードし、返されたスキーマをループしてルールを構築することで、それを実装できます。その場で $this->validate に設定します。

特定のモデルで実行したくない場合は、ブール値の autoValidationRules などの別のプロパティを追加できます。また、 notEmpty がまだ設定されていないかどうかを確認し、必要に応じて自動的に上書きしたりマージしたりしないでください。

編集: この動作を試してみてください。アイデアが気に入ったので、一緒にハックしました。今夜遅くに単体テストを追加する予定です。

https://github.com/burzum/BzUtils/blob/develop/Model/Behavior/AutoValidateBehavior.php

于 2013-07-24T14:19:36.813 に答える
0

実際、CakePHP にはこのための組み込み機能はありません。

コンソールを使用したくない場合は、アプリケーションを設計できるオンライン ツールを使用できます: モデル、リレーション、および検証ルール。その後、列に適切な制約を含む SQL ファイルを自動的に生成し、モデルを使用できます。フィールド、コントローラー、およびビューの対応する検証規則: Online Cake Bake

やりたいことを正確に行うことはできませんが、少なくともデータベースの制約と検証ルールを同時に設計できるため、多くの時間を節約できます。

于 2013-07-24T14:50:57.653 に答える