0

我有控制器:

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 中的变量限制的某些类型的对象的列表。

4

1 回答 1

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

    // ...
}
于 2013-03-08T07:43:23.257 回答