2016-10-06 6 views
1

私はAPIを構築する必要があります。 ルートは1つです。クライアントはXMLを使用してPOSTリクエストを送信しています。 そのXMLに基づいて、私は魔法使いコントローラ@アクションを呼び出すように決めなければなりません。 そして私にはたくさんのコントローラがあります。与えられたパラメータに基づいて呼び出すコントローラ@アクションを決定する

残念ながら、私はクライアント側を修正することはできません。

Laravelの方法でこれを行うにはどうすればよいですか?例

POST["body"] = 
"... 
<controller>content</controller> 
<action>index</action> 
..." 

については

は私がContentController ::インデックス()

Thxをを呼び出したいです!

+0

私はあなたに答えを提供することはできませんが、あなたはPHPの反射を見てみる必要があります。 http://php.net/manual/en/reflectionmethod.invoke.php –

+0

これまでに何を試しましたか?あなたはXMLを解析するまで手に入れましたか?何かを試して、あなたのコードでポストバックしてください。 – Jonathon

+0

申し訳ありませんが、私の質問は正確ではありませんでした。しかし、私は始める方法を知らなかった。 – Vargabor

答えて

0

反射物のThx。それはもっと深く掘り下げる努力に値する大きな魔法です。

xmlの解析に問題はありません。だからここ

URL simplier例です。ApiController.php

/api/request/content/show

routes.phpの

Route::get('api/request/{controller}/{action}', '[email protected]'); 

class ApiController extends Controller 
{ 
    public function request($controller, $action) 
    { 
     //some error check 

     $controller = 'App\Http\Controllers\\' . ucfirst($controller) . 'Controller'; 
     $params = "Put some params here"; 

     $reflectionMethod = new \ReflectionMethod($controller, $action); 
     $reflectionMethod->invoke(new $controller, $params); 

    } 
} 

ContentController.php

class ContentController extends Controller 
{ 
    public function show($params) 
    { 
     dd($params); 
    } 
} 

そして、それはありますワーキング!

Thx a lot!

関連する問題