この記事では、thinkPHP の自動検証、自動追加、フォームエラーの問題の分析を主に紹介し、関連する使用スキルと、thinkPHP の自動補完メカニズムの注意事項も事例の形式で分析します。最近、別のプロジェクトを実行して、thinkphp を使用して検証を書きたかったのですが、数日間泣いていました。最初はトークンエラーだったのですが、自動で追加されたものが無効になってしまいました。
テストと検索を行ったところ、create()メソッドには元々2つのパラメータがあることがわかりました
最初のパラメータは誰もが知っているデータパラメータであり、2番目のパラメータは隠し$typeパラメータです。何かを制御するために使用されますか? ?
コードは次のとおりです://$type = $type?$type!empty($data[$this->getPk()])?self::MODEL_UPDATE:self:: MODEL_INSERT);
この文を注意深く考えた後、このデータベースの特定の操作を示すためにこの隠しパラメータが使用されていることがわかりました?
$type の値は、デフォルトでは挿入操作の場合は 1、更新操作の場合は 0 です。システムが自動的に認識できるため、このパラメータに値を割り当てる必要はありません。
主キーがデータベースによって自動的に追加される場合は、問題ありません。手動で追加すると悲劇が起きるでしょう。デフォルトではデータ更新操作が行われるためです。
以下は私が書いたオートコンプリートコードです
protected $_auto = array( array('password','sha1',1,'function'), array('date', 'time', 1, 'function'), );
1 が見えましたか? 1 は、データが挿入されたときにのみ関数が実行されることを意味します。 PS: そのせいで私は長い間苦労してきました。
データを入力したいときは、次のように書くことができます:
create($_POST,1)//【插入数据】 create($_POST,2)//【更新数据】
この操作が挿入操作であることを create メソッドに直接伝えることで、誤った自動完了タイミングと無効な自動完了の問題を解決できます。
しかし、このように書かないでほしいと言われても仕方がありません。create() 関数を使用すると、デフォルトでデータが更新されることを覚えておいてください。 Modelメソッドを書くとき。
thinkphpオートコンプリート画像
見てください、
protected $_auto = array( array('password','sha1',2,'function'), array('date', 'time', 2, 'function'), //把1换成2就好了。 );
問題は解決できます。
要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。
関連する推奨事項:
php基本操作
以上がthinkPHP の自動検証、自動追加、フォームエラーの問題の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。