@@ -57,21 +57,38 @@ protected function getRouteInformation($route)
5757 ];
5858
5959 $ 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+ }
6077
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 );
6880 if (class_exists ($ controller ) && method_exists ($ controller , $ method )) {
6981 $ reflector = new \ReflectionMethod ($ controller , $ method );
7082 }
7183 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+ }
7592 }
7693
7794 if (isset ($ reflector )) {
0 commit comments