legend3---laravel中获取控制器名称和方法名称
legend3---laravel中获取控制器名称和方法名称
一、总结
一句话总结:
\Route::current()->getActionName();会有完整的当前控制器名和方法名
public static function getControllerAndFunction()
{
$action = \Route::current()->getActionName();
list($class, $method) = explode('@', $action);
$class = substr(strrchr($class,'\\'),1);
return ['controller' => $class, 'method' => $method];
}
1、list($class, $method) = explode('@', $action);中的list($class, $method)的作用是什么?
让list中的$class和$method分别对应explode出来的数组的两个元素
2、strrchr($class,'\\')的作用是什么?
strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
App\Http\Controllers\Admin\MyController中查找\返回的结果是:\MyController
3、substr函数的作用是什么?
Return part of a string
echo substr('abcdef', 1); // bcdef
二、laravel中获取控制器名称和方法名称
1、示例

2、控制器中调用代码:
class MyController extends Controller
{
//修改密码的界面
public function changePasswordForm(){
dd(\App\Model\ControllerAndFunction::getControllerAndFunction());
return view('admin.my.change_pass');
}
3、获取控制器名称和方法名称的代码
<?php namespace App\Model; use Illuminate\Database\Eloquent\Model; class ControllerAndFunction extends Model
{
//
/**
* @return array
* 获取控制器和方法名
*/
public static function getControllerAndFunction()
{
$action = \Route::current()->getActionName();
list($class, $method) = explode('@', $action);
$class = substr(strrchr($class,'\\'),1);
return ['controller' => $class, 'method' => $method];
} /**
* 将控制器和方法用点拼接
* @return string
*/
public static function jointControllerAndFunction(){
$action = \Route::current()->getActionName();
list($class, $method) = explode('@', $action);
$class = substr(strrchr($class,'\\'),1);
return $class.'.'.$method;
} }
$action = \Route::current()->getActionName();的结果为:

list($class, $method) = explode('@', $action);的结果为:

这一步得到方法名changePasswordForm
$class = substr(strrchr($class,'\\'),1);的结果为:

这一步得到控制器名MyController
strrchr($class,'\\')的结果为:

所以还需要substr从1的位置开始截取才的到控制器名称myController
4、相关补充
strrchr() 函数(在php中)查找字符在指定字符串中从右面开始的第一次出现的位置,如果成功,返回该字符以及其后面的字符,如果失败,则返回 NULL。与之相对应的是strchr()函数,它查找字符串中首次出现指定字符以及其后面的字符。
legend3---laravel中获取控制器名称和方法名称的更多相关文章
- asp.net mvc 在视图中获取控制器与动作的名称
获取 controller 名称: ViewContext.RouteData.Values["controller"].ToString(); 获取 action 名称: Vie ...
- Codeigniter 获取当前的控制器名称和方法名称
在Codeigniter 可以通过下面两个方法获取当前的控制器名称和方法名称 $this->router->fetch_class(); $this->router->fetc ...
- IndexOf、LastIndexOf、Substring的用法及C# foreach 中获取索引index的方法
String.IndexOf String.IndexOf 方法 (Char, Int32, Int32)报告指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检查指定数量的字符位置 ...
- android中获取root权限的方法以及原理(转)
一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有 ...
- Sql中获取表结构(字段名称,类型,长度,说明)
Sql中获取表结构(字段名称,类型,长度,说明) SELECT TableName = OBJECT_NAME(c.object_id), ColumnsName = c.name, Descript ...
- Android中获取文件路径的方法总结及对照
最近在写文件存贮,Android中获取文件路径的方法比较多,所以自己也很混乱.找了好几篇博客,发现了以下的路径归纳,记录一下,以备不时之需 Environment.getDataDirectory() ...
- LoadRunner中获取当前系统时间方法
LoadRunner中获取当前系统时间方法 发表于:2017-6-02 11:41 作者:人生_0809 来源:51Testing软件测试网采编 字体:大 中 小 | 上一篇 | 下一篇 | 打 ...
- Java编程中获取键盘输入实现方法及注意事项
Java编程中获取键盘输入实现方法及注意事项 1. 键盘输入一个数组 package com.wen201807.sort; import java.util.Scanner; public clas ...
- Laravel中利用队列发送邮件的方法示例
https://www.jb51.net/article/121647.htm 本文主要给大家介绍了关于Laravel中队列发送邮件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的 ...
随机推荐
- 什么是RTTI
参考: http://www.cnblogs.com/vamei/archive/2013/04/14/3013985.html 运行时类型识别(RTTI, Run-Time Type Identi ...
- Java定义栈结构,实现入栈、出栈操作
package com.example.demo; import java.util.ArrayList; public class Stack { ArrayList<Object> l ...
- Delphi RadioGroup 组件
- 修改mysql的binlog的位置
最近项目上装的mysql服务,分配的磁盘空间太小了,导致binlog两天时间就能打满,这里记录下处理方式 mysql的binlog日志是一个很重要的日志,以事件形式记录了所有的DDL和DML(除了数据 ...
- 表单的 submit 和 onsubmit 的用法 与区别
submit与onsubmit 发生顺序:onsubmit -> submit 1.阻止表单提单: <script>function submitFun(){ //逻辑判断 ...
- ValueError:Object arrarys cannot be loaded when allow_pickle=False
运行python程序报错:ValueError:Object arrarys cannot be loaded when allow_pickle=False 错误原因:numpy版本太高 解决方案: ...
- hive不分区增量更新
insert overwrite table ods.zeg_so select *,case when zsm.id is not null then cast(current_timestamp ...
- ionic实现下载文件并打开功能(file-transfer和file-opener2插件)
作为一款app,下载文件功能,和打开文件功能,在某些场景下还是十分有必要的.使用cordova-plugin-file-transfer和cordova-plugin-file-opener2这两个插 ...
- qt5---资源文件
创建资源文件: 视频教程:https://www.bilibili.com/video/av66748323/ 右击工程目录--->-->--> 添加资源: 右击资源文件--> ...
- vue项目搭建步骤以及一些安装依赖包
一. vue-cli初始化1. 全局安装 vue-clinpm install --global vue-cli2. 创建一个基于 webpack 模板的新项目vue init webpack my- ...