我需要在我的用户缓存网站中包含某种形式的API调用,但是我发现很难找到一种方法来执行此操作。 我已经看到将PHP添加到twig文件的方法之一是创建一个扩展,但这似乎不是我正在寻找的。 p>
我需要能够使用我之前使用PHP进行调用的第三方API来提取数据,但是如果您认为我应该使用不同的方法来执行此操作,那么我愿意接受建议
TIA
答案 0 :(得分:2)
对于Userfrosting> 4.1,在您的sprinkle / composer.json文件中,添加一个要求以包含Guzzle:
"require": {"guzzlehttp/guzzle": "~6.0"}
(记得运行composer update
来安装新的依赖项。
然后在你的controller包含guzzle:
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Exception\ConnectException;
然后你可以用:
开始$client = new Client([
'base_uri' => $config['api']['host'].'/',
'timeout' => 5 // your timeout param
]);
(我在使用环境变量设置我的api主机,因此它没有硬编码。)
然后您可以按如下方式发出POST请求,将响应返回给变量。
$api_response = $client->post('your_api_route', [
'json' => [
'api_param_1' => 'Hello',
'api_param_2' => 'World!'
]
]);
还建议将try
中的最后一位换行并捕获guzzle / http异常。
如果您的回复是JSON文档,则可以使用以下内容将内容检索到数组中:
$data = json_decode($api_response->getBody()->getContents(), true);
答案 1 :(得分:1)
我在我的路由调用的控制器内的用户缓冲设置中与API通信,然后将该数据传递给我的模板。查看first tutorial有关如何创建新模板并将数据传递给它的信息。在路线中使用PHP做任何事情(通过控制器)。