ホームページ バックエンド開発 PHPチュートリアル thinkPHPフレームワークにおける自動入力の原理と解析について

thinkPHPフレームワークにおける自動入力の原理と解析について

Jun 19, 2018 am 10:36 AM
thinkphp フレームワーク 自動入力

この記事では、thinkPHP フレームワークの自動入力について主に紹介し、thinkPHP フレームワークの自動入力の原理、使用方法、および関連する操作上の注意事項をサンプルの形で詳細に分析しています。必要な方はこの記事を参照してください。

# 例では、thinkPHP フレームワークでの自動入力の原理と使用法を分析します。参考までに皆さんと共有してください。詳細は次のとおりです:

thinkphp にはフィールドを自動的に入力するメソッドがあります

入力ルールは次のとおりです。以下のように

array(
   array(完成字段1,完成规则,[完成条件,附加规则]),
   array(完成字段2,完成规则,[完成条件,附加规则]),
   ......
);
ログイン後にコピー

#注: ソース コードを調べたところ、実際には関数にパラメータを渡すために使用される 4 番目のパラメータがあることがわかりました。パラメータ 1 のデフォルトはこのフィールド値 ## です。例:

array('mobile','trim',3,'function',参数2,参数3'),
ログイン後にコピー

支払いの動的および静的確認

静的検証

モデルの自動検証ルールはモデル クラスで事前に定義されており、## を使用した後に自動的に検証されます。 #create メソッド。

以下は正式な例です。1. まず、モデル

#

namespace Home\Model;
use Think\Model;
class UserModel extends Model{
   protected $_auto = array (
     array('status','1'), // 新增的时候把status字段设置为1
     array('password','md5',3,'function') , // 对password字段在新增和编辑的时候使md5函数处理
     array('name','getName',3,'callback'), // 对name字段在新增和编辑的时候回调getName方法
     array('update_time','time',2,'function'), // 对update_time字段在更新的时候写入当前时间戳
   );
}
ログイン後にコピー

2 で検証ルールを定義します。呼び出し時には、

create

メソッドを使用して、

$User = D("User"); // 实例化User对象
if (!$User->create()){ // 创建数据对象
   // 如果创建失败 表示验证没有通过 输出错误提示信息
   exit($User->getError());
}else{
   // 验证通过 写入新增数据
   $User->add();
}
ログイン後にコピー

動的検証

を自動的に入力します。以下は公式の例です

$rules = array (
  array('status','1'), // 新增的时候把status字段设置为1
  array('password','md5',3,'function') , // 对password字段在新增和编辑的时候使md5函数处理
  array('update_time','time',2,'function'), // 对update_time字段在更新的时候写入当前时间戳
);
$User = M('User');
$User->auto($rules)->create();
$User->add();
ログイン後にコピー

以下はコア コード分析です:

create メソッドは次のようになります。

autoOperationMethod を呼び出した後に呼び出されます。メソッドは次のとおりです。

/**
 * 自动表单处理
 * @access public
 * @param array $data 创建数据
 * @param string $type 创建类型
 * @return mixed
 */
private function autoOperation(&$data,$type) {
  if(!empty($this->options['auto'])) {
    $_auto  =  $this->options['auto'];
    unset($this->options['auto']);
  }elseif(!empty($this->_auto)){
    $_auto  =  $this->_auto;
  }
  // 自动填充
  if(isset($_auto)) {
    foreach ($_auto as $auto){
      // 填充因子定义格式
      // array('field','填充内容','填充条件','附加规则',[额外参数])
      if(empty($auto[2])) $auto[2] = self::MODEL_INSERT; // 默认为新增的时候自动填充
      //这里的判断是关键,$type为当前的操作状态,值为1表示是插入,值为2表示是更新
      //如果当前的$type状态值等于设置的值$auto[2]或者$auto[2]的值为3,代表需要填充
      if( $type == $auto[2] || $auto[2] == self::MODEL_BOTH) {
        if(empty($auto[3])) $auto[3] = 'string';
        switch(trim($auto[3])) {
          case 'function':  // 使用函数进行填充 字段的值作为参数
          case 'callback': // 使用回调方法
            $args = isset($auto[4])?(array)$auto[4]:array();
            if(isset($data[$auto[0]])) {
              array_unshift($args,$data[$auto[0]]);
            }
            if('function'==$auto[3]) {
              $data[$auto[0]] = call_user_func_array($auto[1], $args);
            }else{
              $data[$auto[0]] = call_user_func_array(array(&$this,$auto[1]), $args);
            }
            break;
          case 'field':  // 用其它字段的值进行填充
            $data[$auto[0]] = $data[$auto[1]];
            break;
          case 'ignore': // 为空忽略
            if($auto[1]===$data[$auto[0]])
              unset($data[$auto[0]]);
            break;
          case 'string':
          default: // 默认作为字符串填充
            $data[$auto[0]] = $auto[1];
        }
        if(isset($data[$auto[0]]) && false === $data[$auto[0]] )  unset($data[$auto[0]]);
      }
    }
  }
  return $data;
}
ログイン後にコピー

##上記がこの記事の全内容です、皆さんの学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

smarty ループのネストの使用法について

PHP でコンパイルする際の一般的なエラーについて

PHP における静的変数と静的静的変数の使用解析について


#

以上がthinkPHPフレームワークにおける自動入力の原理と解析についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP フォームで自動入力とオートコンプリートを処理する方法 PHP フォームで自動入力とオートコンプリートを処理する方法 Aug 11, 2023 pm 06:39 PM

PHP フォームで自動入力とオートコンプリートを処理する方法 インターネットが発展するにつれて、Web サイトでの操作を簡素化するために人々はますます自動入力とオートコンプリート機能に依存するようになりました。これらの関数を PHP フォームに実装することは複雑ではありませんが、この記事では、PHP を使用してフォームの自動入力とオートコンプリートを処理する方法を簡単に紹介します。始める前に、オートフィルとオートコンプリートが何であるかを明確にする必要があります。自動入力とは、ユーザーの以前の入力または履歴に基づいて、ユーザーのフォームのフィールドに自動的に入力することを指します。たとえば、ユーザーが電子メールを入力すると、

Java を使用してフォーム データの自動入力と入力候補を実装する Java を使用してフォーム データの自動入力と入力候補を実装する Aug 07, 2023 pm 07:05 PM

Javaを利用してフォームデータの自動入力と入力候補を実現 近年、インターネットの発達により、フォームデータの入力は私たちの日常生活の一部となっています。ただし、大量のフォーム データを入力すると、特に繰り返しデータを入力する場合に、ユーザーに問題が発生することがよくあります。ユーザーの入力効率とエクスペリエンスを向上させるために、Java 言語を使用してフォーム データの自動入力と入力候補を実装できます。この記事では、Java を使用してこの関数を実装する方法を紹介し、参考となるコード例を示します。まず必要なのは、

php は ThinkPHP6 フレームワークをどのように使用しますか? php は ThinkPHP6 フレームワークをどのように使用しますか? May 31, 2023 pm 03:01 PM

Web 開発は進化し続けるため、開発者はアプリケーションの品質を向上させながら時間と労力を節約するために、いくつかの実用的なツールとフレームワークを使用する必要があります。 ThinkPHP は、開発を大幅に簡素化し、効率を向上させる人気の PHP フレームワークです。この記事では、最新バージョンの ThinkPHP6 フレームワークの使用方法を学びます。環境要件 まず、システムが次の要件を満たしていることを確認する必要があります。 PHP バージョン 7.1 以降 MySQL バージョン 5.5 以降 Composer は、

PHP のフォーム自動入力テクニック PHP のフォーム自動入力テクニック May 24, 2023 am 09:31 AM

インターネットの継続的な発展に伴い、フォームは私たちが日常の Web サイトで使用する機能の 1 つになりました。ユーザーにフォームに記入してもらうのは間違いなく面倒な作業なので、プロセスを簡素化するためにいくつかの工夫が必要です。この記事では、PHP でフォームの自動入力を実装するテクニックを紹介します。 1. デフォルト値を使用する フォームのデフォルト値を設定する場合、formタグの「value」属性を使用して指定できます。以下に例を示します: <inputtype="text"name=&q

PHP の ThinkPHP フレームワーク ガイド PHP の ThinkPHP フレームワーク ガイド May 21, 2023 am 08:51 AM

ThinkPHP は有名な PHP オープン ソース フレームワークであり、効率性、シンプルさ、使いやすさが特徴で、大規模な Web アプリケーションを迅速に構築できます。この記事では、ThinkPHPフレームワークの使い方と注意点を紹介します。 1. ThinkPHP フレームワークのインストール 1. ThinkPHP フレームワークのダウンロード 公式 Web サイト (http://www.thinkphp.cn/) から ThinkPHP 圧縮パッケージをダウンロードし、解凍します。 Composer を通じてインストールすることもできます

開発に関する提案: RBAC 権限管理に ThinkPHP フレームワークを使用する方法 開発に関する提案: RBAC 権限管理に ThinkPHP フレームワークを使用する方法 Nov 22, 2023 pm 08:02 PM

「RBAC 権限管理に ThinkPHP フレームワークを使用するための開発提案」 インターネットの発展に伴い、システムのセキュリティと制御性を確保するために権限管理機能を実装する必要がある Web アプリケーションがますます増えています。 RBAC (Role-BasedAccessControl、ロールベースのアクセス制御) は、成熟した権限管理モデルとして、実際の開発で広く使用されています。 ThinkPHP は、豊富な機能と柔軟な拡張機能を提供する人気の PHP フレームワークです。

Firefox がアカウントのパスワードを保存した後、自動的に入力できない問題を解決する方法 Firefox がアカウントのパスワードを保存した後、自動的に入力できない問題を解決する方法 Jan 29, 2024 pm 07:30 PM

Firefox がアカウントのパスワードを保存した後に自動的に入力できない場合はどうすればよいですか? アカウントのパスワードを保存することを選択しましたが、自動的に入力できない場合はどうすればよいですか? Firefox を使用してアカウントとパスワードにログインすると、ブラウザはそれを保存するかどうかを尋ねるメッセージを表示します。保存することを選択しましたが、次回ブラウザを開いたときに、アカウントとパスワードはまだ自動的に入力されません。 . これを解決する方法は次のとおりです Firefox がアカウントのパスワードを保存した後に自動的に入力できない問題の解決策を編集者がまとめました。そうでない場合は、以下をフォローしてください。 Firefox がアカウントのパスワードを保存した後に自動的に入力できない場合はどうすればよいですか? 1. Firefox を開き、ブラウザの右上隅にある「メニューを開く」アイコンをクリックし、下のメニューリストの「オプション」をクリックして開きます。ブラウザのオプションパネル。 2. 火の中で

PHP クローラーを使用してフォームに自動的に入力し、データを送信するにはどうすればよいですか? PHP クローラーを使用してフォームに自動的に入力し、データを送信するにはどうすればよいですか? Aug 08, 2023 pm 12:49 PM

PHP クローラーを使用してフォームに自動的に入力し、データを送信するにはどうすればよいですか?インターネットの発展に伴い、Web ページからデータを取得したり、フォームに自動的に入力してデータを送信したりする必要性がますます高まっています。 PHP は強力なサーバーサイド言語として、これらの機能を実装するための多数のツールとクラス ライブラリを提供します。この記事では、PHP でクローラーを使用してフォームに自動的に入力し、データを送信する方法を説明します。まず、PHP のカール ライブラリを使用して、Web ページ データを取得して送信する必要があります。 CURL ライブラリは強力です

See all articles