改进操作获取

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)
{
if ('' === $template) {
$trace = debug_backtrace(false, 2);
$suffix = Config::get('action_suffix');
$action = $suffix ? substr($trace[1]['function'], 0, -strlen($suffix)) : $trace[1]['function'];
$template = Loader::parseName($action);
$template = Loader::parseName(request()->action(true));
}
return Response::create($template, 'view', $code)->replace($replace)->assign($vars);
}

View File

@@ -581,6 +581,13 @@ class App
if (is_callable([$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'])) {
// 空操作
$call = [$instance, '_empty'];

View File

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

View File

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