ホームページ > バックエンド開発 > PHPチュートリアル > thinkPHP の自動検証、自動追加、フォームエラーの問題の詳細な説明

thinkPHP の自動検証、自動追加、フォームエラーの問題の詳細な説明

墨辰丷
リリース: 2023-03-28 18:24:02
オリジナル
1270 人が閲覧しました

この記事では、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基本操作

PHPデータ型


PHPは、指定されたディレクトリにファイルが存在するかどうかを判断します


PHPプロセス信号処理


以上がthinkPHP の自動検証、自動追加、フォームエラーの問題の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート