[英]Trying to embed php within my twig files whilst using userfrosting
我需要在userfrosting网站中包含某种形式的API调用,但是我发现很难找到一种方法来做到这一点。 我已经看到将PHP添加到树枝文件的一种方法是创建一个扩展,但这似乎并不是我要寻找的。
我需要能够使用以前使用PHP进行调用的第三方API来提取数据,但是如果您认为我应该使用其他方法来做到这一点,我欢迎您提出建议。
TIA
对于> 4.1的Userfrosting,在您的drop / composer.json文件中,添加一个要求以包含Guzzle: "require": {"guzzlehttp/guzzle": "~6.0"}
(请记住运行composer update
以安装新的依赖项。
然后在您的控制器中加入食尸鬼:
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Exception\ConnectException;
那么您可以使用以下方法来启动食尸鬼:
$client = new Client([
'base_uri' => $config['api']['host'].'/',
'timeout' => 5 // your timeout param
]);
(我使用环境变量在sprinkle配置中设置了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);
我在我的路由调用的控制器内的用户霜设置中与API通讯,然后将该数据传递给模板。 查看有关如何创建新模板并将数据传递给它的第一个教程 。 使用路由(需要通过控制器)对PHP进行任何操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.