根据给定参数确定要调用哪个控制器@动作

时间:2016-10-06 14:37:52

标签: laravel

我必须建立一个api。 它有一条路线。客户端正在发送带有XML的POST请求。 基于那个xml,我必须决定调用witch controller @ action。 而且我有很多控制器。

不幸的是,我无法修改客户端。

你有什么建议我怎么能以Laravel的方式做到这一点?

例如

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

我想调用ContentController :: index()

THX!

1 个答案:

答案 0 :(得分:0)

反思的东西。这是一个很大的魔力,值得深入研究它。

我解析xml没问题。所以这是一个更简单的例子

网址:/api/request/content/show

routes.php文件

Route::get('api/request/{controller}/{action}', 'ApiController@request');

ApiController.php

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);
    }
}

它正在发挥作用!

很多!