| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- <?php
 
- // +----------------------------------------------------------------------
 
- // | ThinkPHP [ WE CAN DO IT JUST THINK ]
 
- // +----------------------------------------------------------------------
 
- // | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
 
- // +----------------------------------------------------------------------
 
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 
- // +----------------------------------------------------------------------
 
- // | Author: liu21st <liu21st@gmail.com>
 
- // +----------------------------------------------------------------------
 
- namespace think\response;
 
- use think\Response;
 
- class Redirect extends Response
 
- {
 
-     protected $options = [];
 
-     // URL参数
 
-     protected $params = [];
 
-     public function __construct($data = '', $code = 302, array $header = [], array $options = [])
 
-     {
 
-         parent::__construct($data, $code, $header, $options);
 
-         $this->cacheControl('no-cache,must-revalidate');
 
-     }
 
-     /**
 
-      * 处理数据
 
-      * @access protected
 
-      * @param  mixed $data 要处理的数据
 
-      * @return mixed
 
-      */
 
-     protected function output($data)
 
-     {
 
-         $this->header['Location'] = $this->getTargetUrl();
 
-         return;
 
-     }
 
-     /**
 
-      * 重定向传值(通过Session)
 
-      * @access protected
 
-      * @param  string|array  $name 变量名或者数组
 
-      * @param  mixed         $value 值
 
-      * @return $this
 
-      */
 
-     public function with($name, $value = null)
 
-     {
 
-         $session = $this->app['session'];
 
-         if (is_array($name)) {
 
-             foreach ($name as $key => $val) {
 
-                 $session->flash($key, $val);
 
-             }
 
-         } else {
 
-             $session->flash($name, $value);
 
-         }
 
-         return $this;
 
-     }
 
-     /**
 
-      * 获取跳转地址
 
-      * @access public
 
-      * @return string
 
-      */
 
-     public function getTargetUrl()
 
-     {
 
-         if (strpos($this->data, '://') || (0 === strpos($this->data, '/') && empty($this->params))) {
 
-             return $this->data;
 
-         } else {
 
-             return $this->app['url']->build($this->data, $this->params);
 
-         }
 
-     }
 
-     public function params($params = [])
 
-     {
 
-         $this->params = $params;
 
-         return $this;
 
-     }
 
-     /**
 
-      * 记住当前url后跳转
 
-      * @access public
 
-      * @param string $url 指定记住的url
 
-      * @return $this
 
-      */
 
-     public function remember($url = null)
 
-     {
 
-         $this->app['session']->set('redirect_url', $url ?: $this->app['request']->url());
 
-         return $this;
 
-     }
 
-     /**
 
-      * 跳转到上次记住的url
 
-      * @access public
 
-      * @param  string  $url 闪存数据不存在时的跳转地址
 
-      * @return $this
 
-      */
 
-     public function restore($url = null)
 
-     {
 
-         $session = $this->app['session'];
 
-         if ($session->has('redirect_url')) {
 
-             $this->data = $session->get('redirect_url');
 
-             $session->delete('redirect_url');
 
-         } elseif ($url) {
 
-             $this->data = $url;
 
-         }
 
-         return $this;
 
-     }
 
- }
 
 
  |