我对yii框架有点陌生,我需要帮助。
我需要实现一个stripe webhook控制器,用于stripe发送的订阅事件。对于此控制器,既没有视图也没有模型
我可以访问控制器,但是$\u POST内容是空的,我不知道为什么。
是否可以在没有视图的情况下使用post动词?
这里有一个例子:
class StripeWebhookController extends Controller
{
public function beforeAction($action)
{
if ($action->id == 'index') {
$this->enableCsrfValidation = false;
}
return parent::beforeAction($action);
}
public function actionIndex()
{
header('Content-Type: text/html; charset=utf-8');
StripeLoader::autoload();
\Stripe\Stripe::setApiKey( Settings::get("stripe_secret_key") );
// retrieve the request's body and parse it as JSON
$input = file_get_contents('php://input'); // -> here $input is null
$event_json = json_decode($input, true);
// Do the work...
}
我用了
print_r(Yii::$app->request->post() /*$_POST*/); exit();
我只得到一个空数组。
经过几天的搜寻,我什么也没找到。。。
如果有人有主意我很乐意接受
附加信息:我们在IIS web服务器上运行,使用的是Yii2框架
谢谢你给我读cya
对于任何同样陷入困境的人,我必须执行以下操作才能使其正常工作:
禁用整个类别的CSRF保护
public$enableCsrfValidation=false代码>
使用getRawBody()而不是post()
$data=json_decode(Yii::$app-
在框架之外,您可以使用file\u get\u contents(“php://input“”
避免任何服务器端重定向
在我的例子中,这意味着URL中没有尾随斜杠或www
如果Yii::$app-