我无法从URL获取参数到我的Yii2控制器或模型,以通过WebService在发布请求中将其发送。
例如网址:https://example.com/?keyword=test&id=1234
我的模型保存功能代码为:
public function save($keyword)
{
$httpClient = new Client();
$data = [
'civilite' => $this->civility,
'nom' => $this->lastName,
'prenom' => $this->firstName,
'telephone' => $this->phoneNumber,
'email' => $this->emailAddress,
'operateur' => $this->operator,
'tel_domicile' => $this->phone,
'keyword' => $keyword,
];
$preferences = explode(',', $this->preferences);
$index = 0;
foreach ($preferences as $preference) {
$index++;
$data['attente' . $index] = $preference;
}
LeadLogHelper::log($data);
$rawResponse = $httpClient->createRequest()
->setMethod('POST')
->setUrl(\Yii::$app->params['WebserviceUrl'])
->setData($data)
->send();
$response = json_decode($rawResponse->content);
if (!$response->Statut) {
Yii::error('An error occurred while saving the data using the webservice', __METHOD__);
Yii::error($data, __METHOD__);
Yii::error($response, __METHOD__);
}
return $response->Statut == 1 || $response->Message === 'Already exist.';
}
我的控制器的Sumbit操作是:
public function actionSubmit()
{
$leadModel = new LeadModel();
$data = LeadModelFormHelper::transformDataFormToModel(Yii::$app->request->post());
$leadModel->setAttributes($data);
if (!$leadModel->validate()) {
return $this->sendValidationErrorResponse($leadModel->getErrors());
}
$bestOffer = $leadModel->getBestOffer();
$isSuccessfullySaved = $leadModel->save(Yii::$app->request->get('keyword'));
if (!$isSuccessfullySaved) {
$response = $this->asJson(['errors' => ['webservice' => 'Error while saving the lead']]);
$response->statusCode = 550;
return $response->send();
}
$lastStep = Json::decode(file_get_contents(__DIR__ . '/../config-offers/offers.json'));
$isSuccessfullySent = Yii::$app->mailer->compose(
'offer-summary',
ArrayHelper::merge($leadModel->getAttributes(), $lastStep['offres'][$bestOffer])
)
->setFrom(['noreply@choisirmabox.fr' => 'CHOISIR MA BOX'])
->setTo($leadModel->emailAddress)
->setSubject('choisirmabox.fr - Votre offre')
->send();
if (!$isSuccessfullySent) {
Yii::error("Could not send the email", __METHOD__);
}
return $this->asJson(['offer' => $bestOffer]);
}
关键字的值为NULL,有人可以帮我吗?!!
答案 0 :(得分:1)
[更新]
当我过去遇到此问题时,请确保我通过打印所有\Yii::$app->request->getQueryParams()
或\Yii::$app->request->get()
之类的get参数来访问正确的params,以确保可以看到get params,如果在进入actionSubmit()之前又想过另一个动作,则GET参数也会丢失。通过打印\Yii::$app->request
来检查引荐来源网址可以帮助您快速查看之前的位置。