如何在getList()中获取额外数据?

时间:2013-03-07 23:48:22

标签: zend-framework2

我有控制器:

class MyController extends AbstractRestfulController{

    protected $myTable;

    public function getList(){
        $results = $this->getMyTable()->fetchAll();
        $data = array();
        foreach($results as $result) {
            $data[] = $result;
        }
        return new JsonModel(array(
            'data' => $data
        ));
    }

[...]

我检查:

 curl -i -H "Accept: application/json" http://localhost/myapp/restroute -X GET

,没关系。但我想向此方法发送额外数据,例如:

 curl -i -H "Accept: application/json" http://localhost/myapp/restroute -X GET -d "name=john"

如何在getList()方法中读取此数据?

我可以使用create($ data)方法但不知何故它不适合我(create方法用于创建等)。我想要,例如获取$ _GET中受变量限制的某些类型对象的列表。

1 个答案:

答案 0 :(得分:3)

AbstractRestfulController内,有一个名为processBodyContent的辅助方法,非常适合您尝试做的事情:

public function getList()
{
    $content = $this->processBodyContent($this->getRequest());
    $name = array_key_exists('name', $content) ? $content['name'] : '';

    // ...
}

当你使用GET时,你应该考虑做:

 curl -i -H "Accept: application/json" http://localhost/myapp/restroute?name=john -X GET

然后您可以在getList()内检索:

public function getList()
{
    $name = $this->params()->fromQuery('name');

    // ...
}