ThinkPHP フレームワークでは、リダイレクト方式を使用してジャンプ機能を実装できます。このメソッドはコントローラーの基本クラスで定義されているため、コントローラーはこのメソッドを直接呼び出して即時ジャンプ関数を実装できます。リダイレクト メソッドは、$url と $params の 2 つのパラメータを受け入れます。
このうち、$url はリダイレクト先の URL アドレスです。パラメーターには、単純な文字列、配列、または # で始まるアンカー値を指定できます。 $Url パラメーターが配列の場合、ルーティング ルールのエイリアス、コントローラー名、操作名、パラメーター リストを含めることができます。つまり、配列ではさまざまな要素を指定することで、さまざまなジャンプ効果を実現できます。
$params は、GET リクエストに追加するパラメータを指定するために使用できるオプションのパラメータです。このパラメータは、URL にクエリ文字列 (つまり、「?」) が含まれていない場合にのみ有効です。 URL にすでにクエリ文字列が含まれている場合、$params は無視されます。
次に、リダイレクト メソッドの使用例を示します。
class IndexController extends Controller { public function index() { // 直接跳转到百度首页 $this->redirect('http://www.baidu.com'); } public function test() { // 跳转到当前控制器Index操作中 $this->redirect('Index/index'); // 跳转到Home控制器中的Index操作 $this->redirect('Home/Index/index'); // 跳转并传递$name参数 $this->redirect('Index/index', array('name' => 'ThinkPHP')); // 跳转并传递多个参数 $this->redirect('Index/index', array('name' => 'ThinkPHP', 'id' => 100)); } }
上記のコード例では、リダイレクト メソッドを使用してさまざまなジャンプ関数を実装しています。たとえば、$this->redirect('http://www.baidu.com');
は、Baidu ホームページに直接ジャンプする操作です。 $this->redirect('Index/index');
現在のコントローラーのインデックス操作にジャンプします。 $this->redirect('Home/Index/index');
は、Home コントローラーの Index 操作を指します。 $this->redirect('Index/index', array('name' => 'ThinkPHP'));
ジャンプして、$name パラメーターを渡します。 $this->redirect('Index/index', array('name' => 'ThinkPHP', 'id' => 100));
は、ジャンプして複数のパラメータを渡すことです。
リダイレクト メソッドは、Web ページを指定された URL にリダイレクトするだけでなく、ルーティング ルールのエイリアスにもリダイレクトできます。この場合、$url パラメータは URL アドレスではなく、ルーティング エイリアスである必要があります。たとえば、次のルーティング ルールがあるとします。
// 路由规则定义 'link/:id' => 'Links/link',
ルーティング ルールのエイリアス「link」を使用して、コントローラ内のリダイレクト メソッドを呼び出し、リンク ページにジャンプできます。例:
class LinksController extends Controller { public function link() { $id = I('get.id'); $link = M('Links')->where(array('id'=>$id))->find(); // 验证链接是否存在 if ($link) { // 跳转到重定义的路由规则上 $this->redirect('link/'.$id); } else { $this->error('链接不存在!'); } } }
上記のコード例では、リンク コントローラーのリンク メソッドで再定義されたルーティング ルール エイリアスへのリダイレクトを使用しました。 "$this->redirect('link/'.$id);"
ルーティング エイリアスが使用され、リンク ページにジャンプするためのパラメーターが渡されます。
以上がthinkphp3.2の即時ジャンプ機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。