ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp ジャンプ ページのカプセル化チュートリアル

thinkphp ジャンプ ページのカプセル化チュートリアル

王林
王林オリジナル
2023-05-29 11:10:38470ブラウズ

ThinkPHP は、強力な MVC パターン サポートを提供するオープン ソースの PHP 開発フレームワークで、開発者は堅牢な Web アプリケーションを迅速に開発できます。 Web アプリケーションを開発する場合、ユーザーがログインに成功した後、ユーザー インターフェイスにジャンプするなど、ページ ジャンプが必要になることがよくあります。この記事では、ThinkPHP を使用してページにジャンプし、ページジャンプ機能をカプセル化する方法を紹介します。

1. ページ ジャンプに ThinkPHP を使用する

ThinkPHP には、ページ ジャンプ用の 2 つの組み込み関数が用意されています:

  1. redirect() 関数

redirect() 関数は、指定された URL アドレスにジャンプするために使用されます。その構文は次のとおりです:

redirect('url', '参数', '状态码')->send();

その中に:

  • url: リダイレクトされる URL アドレス。
  • パラメータ: GET メソッドのパラメータ。配列または文字列を指定できます。
  • ステータス コード: HTTP ステータス コード (リダイレクトの場合は 302、永続的なリダイレクトの場合は 301 など)。

たとえば、http://www.example.com/user/index ページにジャンプする場合、コードは次のとおりです:

redirect('http://www.example.com/user/index')->send();
  1. success()および error() 関数

success() および error() 関数は、ページがジャンプしたときにプロンプ​​ト メッセージを表示するために使用されます。成功プロンプト情報には success() 関数が使用され、失敗プロンプト情報には error() 関数が使用されます。構文は次のとおりです:

success('提示信息', '跳转URL', '等待时间')->send();
error('提示信息', '跳转URL', '等待时间')->send();

その中には:

  • プロンプト情報: 表示される情報。文字列または配列にすることができます。
  • ジャンプ先URL:ジャンプ先のURLアドレスは省略可能です。
  • 待機時間: 秒単位の待機時間。デフォルトは 1 秒で、省略できます。

たとえば、成功メッセージを表示して http://www.example.com/user/index ページにジャンプするには、コードは次のとおりです。

success('登录成功', 'http://www.example.com/user/index')->send();

2 . カプセル化ジャンプ ページ転送機能

再利用を容易にするために、ページ ジャンプをカプセル化できます。以下は、単純なジャンプ ページ関数コードです。

/**
 * 跳转页函数
 *
 * @param string $url 要跳转的URL地址
 * @param string $message 信息提示
 * @param int $waitTime 等待时间
 * @return void
 */
function jump($url, $message = '', $waitTime = 1) {
    if (empty($url)) {
        exit('错误:未指定跳转URL地址!');
    }
    if (!empty($message)) {
        $message = htmlspecialchars($message);
    }
    if ($waitTime == 0) {
        header("Location: {$url}");
        exit;
    }
    $css = <<<EOF
    <style type="text/css">
    .jump {
        text-align:center;
        padding-top:5%;
        font-family: 'Microsoft Yahei', Verdana, Arial;
        font-size:16px;
    }
    .jump h3 {
        font-size:24px;
        font-weight:bold;
    }
    </style>
EOF;
    $html = <<<EOF
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>跳转提示</title>
{$css}
</head>
<body>
    <div class="jump">
        <h3>跳转提示</h3>
        <p>{$message}</p>
        <p>等待时间:<span id="wait_time">{$waitTime}</span>秒</p>
        <p><a href="{$url}">立即跳转</a></p>
    </div>
    <script type="text/javascript">
        var wait_time = {$waitTime};
        var interval = setInterval(function(){
            if(wait_time > 0) {
                wait_time--;
                document.getElementById('wait_time').innerHTML = wait_time;
            } else {
                clearInterval(interval);
                window.location.href = '{$url}';
            }
        }, 1000);
    </script>
</body>
</html>
EOF;
    echo $html;
}

上記のカプセル化関数を使用すると、次のコードをコントローラーに実装できます。

public function login() {
    if($this->request->post()){
        $data = $this->request->post();
        // 验证码验证

        $user = UserModel::where('username', $data['username'])->find();
        if(!$user || $user->password != $data['password']){
            jump(url('login/index'), '用户名或密码错误', 3);
        } else {
            jump(url('user/index'), '登录成功', 3);
        }
    }
    return $this->fetch();
}

上記は、ThinkPHP を使用して、ページを作成し、ジャンプをカプセル化する ページめくり機能のチュートリアル。ラッパー関数を使用すると、別のコントローラーで簡単に再利用できます。

以上がthinkphp ジャンプ ページのカプセル化チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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