欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

/*blade模板服务注入*/ $controller 是字符串 模板 调用 控制器 方法 laravel template view call controller method function 有大用

 /*blade模板服务注入*/
$controller_inject = app($controller);  

在模板中 得到 某控制器对象 
 (如果 \App\Http\Controllers\Admin\ThemeController 是
当前控制器类 ,那么 它应该是重新创建一个对象,而不是本来的controller 对象)
$controller = app('\App\Http\Controllers\Admin\ThemeController');
dd($controller);
 
它应该不是重新创建一个对象,而是本来的controller 对象  
app('request')->route()->getController() 



下面方法是得到 action
使用 dd(request()->route()->getAction());
答案对人有帮助,有参考价值
echo Route::getCurrentRoute()->getActionName();


dd(Route::currentRouteAction()); //dingo router里面有定义这个方法

输出 "App\Http\Controllers\Api\UserController@index"

很明显可以,最笨的方法,你把整个控制器赋值给一个变量传递过去也行啊


 只不过这个 inject 命令有bug,第2个参数默认是单引号引用的,所以当你传递变量的时候并不能解析,因此用下面的注入方式:

 【师兄】Flymoo(153786)  10:09:16
事实上,inject 底层就是用app()函数实现的
【师兄】Flymoo(153786)  10:10:35
而控制器并不能通过简单的赋值一个变量传递过去,需要注入 

0

已采纳

使用 dd(request()->route()->getAction());

0
dd(Route::currentRouteAction()); //dingo router里面有定义这个方法

输出 "App\Http\Controllers\Api\UserController@index"

0

dd(explode(__METHOD__));


0

已采纳

使用 dd(request()->route()->getAction());

0
dd(Route::currentRouteAction()); //dingo router里面有定义这个方法

输出 "App\Http\Controllers\Api\UserController@index"

0

dd(explode(__METHOD__));


普通分类: