改进操作获取

This commit is contained in:
thinkphp
2018-03-26 17:24:20 +08:00
parent e6b7e87586
commit 97de5ec026
4 changed files with 12 additions and 10 deletions

View File

@@ -444,10 +444,7 @@ if (!function_exists('view')) {
function view($template = '', $vars = [], $replace = [], $code = 200) function view($template = '', $vars = [], $replace = [], $code = 200)
{ {
if ('' === $template) { if ('' === $template) {
$trace = debug_backtrace(false, 2); $template = Loader::parseName(request()->action(true));
$suffix = Config::get('action_suffix');
$action = $suffix ? substr($trace[1]['function'], 0, -strlen($suffix)) : $trace[1]['function'];
$template = Loader::parseName($action);
} }
return Response::create($template, 'view', $code)->replace($replace)->assign($vars); return Response::create($template, 'view', $code)->replace($replace)->assign($vars);
} }

View File

@@ -581,6 +581,13 @@ class App
if (is_callable([$instance, $action])) { if (is_callable([$instance, $action])) {
// 执行操作方法 // 执行操作方法
$call = [$instance, $action]; $call = [$instance, $action];
// 严格获取当前操作方法名
$reflect = new \ReflectionMethod($instance, $action);
$methodName = $reflect->getName();
$suffix = $config['action_suffix'];
$actionName = $suffix ? substr($methodName, 0, -strlen($suffix)) : $methodName;
$request->action($actionName);
} elseif (is_callable([$instance, '_empty'])) { } elseif (is_callable([$instance, '_empty'])) {
// 空操作 // 空操作
$call = [$instance, '_empty']; $call = [$instance, '_empty'];

View File

@@ -118,10 +118,7 @@ class Controller
protected function fetch($template = '', $vars = [], $replace = [], $config = []) protected function fetch($template = '', $vars = [], $replace = [], $config = [])
{ {
if ('' === $template) { if ('' === $template) {
$trace = debug_backtrace(false, 2); $template = Loader::parseName($this->request->action(true));
$suffix = Config::get('action_suffix');
$action = $suffix ? substr($trace[1]['function'], 0, -strlen($suffix)) : $trace[1]['function'];
$template = Loader::parseName($action);
} }
return $this->view->fetch($template, $vars, $replace, $config); return $this->view->fetch($template, $vars, $replace, $config);

View File

@@ -1466,11 +1466,12 @@ class Request
*/ */
public function action($action = null) public function action($action = null)
{ {
if (!is_null($action)) { if (!is_null($action) && !is_bool($action)) {
$this->action = $action; $this->action = $action;
return $this; return $this;
} else { } else {
return $this->action ?: ''; $name = $this->action ?: '';
return true === $action ? $name : strtolower($name);
} }
} }