|
|
<?php |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace think; |
|
|
|
|
|
use think\exception\ValidateException; |
|
|
use traits\controller\Jump; |
|
|
use think\Log; |
|
|
|
|
|
Loader::import('controller/Jump', TRAIT_PATH, EXT); |
|
|
|
|
|
class Controller |
|
|
{ |
|
|
use Jump; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected $view; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected $request; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected $failException = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected $batchValidate = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected $beforeActionList = []; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function __construct(Request $request = null) |
|
|
{ |
|
|
$this->view = View::instance(Config::get('template'), Config::get('view_replace_str')); |
|
|
$this->request = is_null($request) ? Request::instance() : $request; |
|
|
|
|
|
|
|
|
$this->_initialize(); |
|
|
|
|
|
|
|
|
if ($this->beforeActionList) { |
|
|
foreach ($this->beforeActionList as $method => $options) { |
|
|
is_numeric($method) ? |
|
|
$this->beforeAction($options) : |
|
|
$this->beforeAction($method, $options); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function _initialize() |
|
|
{ |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function beforeAction($method, $options = []) |
|
|
{ |
|
|
if (isset($options['only'])) { |
|
|
if (is_string($options['only'])) { |
|
|
$options['only'] = explode(',', $options['only']); |
|
|
} |
|
|
|
|
|
if (!in_array($this->request->action(), $options['only'])) { |
|
|
return; |
|
|
} |
|
|
} elseif (isset($options['except'])) { |
|
|
if (is_string($options['except'])) { |
|
|
$options['except'] = explode(',', $options['except']); |
|
|
} |
|
|
|
|
|
if (in_array($this->request->action(), $options['except'])) { |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
call_user_func([$this, $method]); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function fetch($template = '', $vars = [], $replace = [], $config = []) |
|
|
{ |
|
|
|
|
|
if($GLOBALS['config']['site']['new_version'] == 1 || !isset($GLOBALS['config']['site']['new_version']) || (empty($GLOBALS['config']['site']['new_version']) && $GLOBALS['config']['site']['new_version'] != 0)){ |
|
|
|
|
|
if (strpos($template, 'admin@') === 0) { |
|
|
$parts = explode('@', $template); |
|
|
$result = $parts[1]; |
|
|
$template = APP_PATH . request()->module() . '/view_new/' . $result . '.html'; |
|
|
} |
|
|
} |
|
|
return $this->view->fetch($template, $vars, $replace, $config); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function display($content = '', $vars = [], $replace = [], $config = []) |
|
|
{ |
|
|
return $this->view->display($content, $vars, $replace, $config); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function assign($name, $value = '') |
|
|
{ |
|
|
$this->view->assign($name, $value); |
|
|
|
|
|
return $this; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function engine($engine) |
|
|
{ |
|
|
$this->view->engine($engine); |
|
|
|
|
|
return $this; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function validateFailException($fail = true) |
|
|
{ |
|
|
$this->failException = $fail; |
|
|
|
|
|
return $this; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function validate($data, $validate, $message = [], $batch = false, $callback = null) |
|
|
{ |
|
|
if (is_array($validate)) { |
|
|
$v = Loader::validate(); |
|
|
$v->rule($validate); |
|
|
} else { |
|
|
|
|
|
if (strpos($validate, '.')) { |
|
|
list($validate, $scene) = explode('.', $validate); |
|
|
} |
|
|
|
|
|
$v = Loader::validate($validate); |
|
|
|
|
|
!empty($scene) && $v->scene($scene); |
|
|
} |
|
|
|
|
|
|
|
|
if ($batch || $this->batchValidate) { |
|
|
$v->batch(true); |
|
|
} |
|
|
|
|
|
|
|
|
if (is_array($message)) { |
|
|
$v->message($message); |
|
|
} |
|
|
|
|
|
|
|
|
if ($callback && is_callable($callback)) { |
|
|
call_user_func_array($callback, [$v, &$data]); |
|
|
} |
|
|
|
|
|
if (!$v->check($data)) { |
|
|
if ($this->failException) { |
|
|
throw new ValidateException($v->getError()); |
|
|
} |
|
|
|
|
|
return $v->getError(); |
|
|
} |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
|