@@ -57,21 +57,38 @@ protected function getRouteInformation($route)
57
57
];
58
58
59
59
$ result = array_merge ($ result , $ action );
60
+ $ uses = $ action ['uses ' ] ?? null ;
61
+ $ controller = is_string ($ action ['controller ' ] ?? null ) ? $ action ['controller ' ] : '' ;
62
+
63
+ if (request ()->hasHeader ('X-Livewire ' )) {
64
+ try {
65
+ $ component = request ('components ' )[0 ];
66
+ $ name = json_decode ($ component ['snapshot ' ], true )['memo ' ]['name ' ];
67
+ $ method = $ component ['calls ' ][0 ]['method ' ];
68
+ $ class = app (\Livewire \Mechanisms \ComponentRegistry::class)->getClass ($ name );
69
+ if (class_exists ($ class ) && method_exists ($ class , $ method )) {
70
+ $ controller = $ class . '@ ' . $ method ;
71
+ $ result ['controller ' ] = ltrim ($ controller , '\\' );
72
+ }
73
+ } catch (\Throwable $ e ) {
74
+ //
75
+ }
76
+ }
60
77
61
-
62
- if (
63
- isset ($ action ['controller ' ])
64
- && is_string ($ action ['controller ' ])
65
- && strpos ($ action ['controller ' ], '@ ' ) !== false
66
- ) {
67
- list ($ controller , $ method ) = explode ('@ ' , $ action ['controller ' ]);
78
+ if (str_contains ($ controller , '@ ' )) {
79
+ list ($ controller , $ method ) = explode ('@ ' , $ controller );
68
80
if (class_exists ($ controller ) && method_exists ($ controller , $ method )) {
69
81
$ reflector = new \ReflectionMethod ($ controller , $ method );
70
82
}
71
83
unset($ result ['uses ' ]);
72
- } elseif (isset ($ action ['uses ' ]) && $ action ['uses ' ] instanceof \Closure) {
73
- $ reflector = new \ReflectionFunction ($ action ['uses ' ]);
74
- $ result ['uses ' ] = $ this ->formatVar ($ result ['uses ' ]);
84
+ } elseif ($ uses instanceof \Closure) {
85
+ $ reflector = new \ReflectionFunction ($ uses );
86
+ $ result ['uses ' ] = $ this ->formatVar ($ uses );
87
+ } elseif (is_string ($ uses ) && str_contains ($ uses , '@__invoke ' )) {
88
+ if (class_exists ($ controller ) && method_exists ($ controller , 'render ' )) {
89
+ $ reflector = new \ReflectionMethod ($ controller , 'render ' );
90
+ $ result ['controller ' ] = $ controller . '@render ' ;
91
+ }
75
92
}
76
93
77
94
if (isset ($ reflector )) {
0 commit comments