从网址Yii2获取参数

时间:2020-07-08 11:49:02

标签: parameters yii get yii2

我无法从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,有人可以帮我吗?!!

1 个答案:

答案 0 :(得分:1)

[更新]

当我过去遇到此问题时,请确保我通过打印所有\Yii::$app->request->getQueryParams()\Yii::$app->request->get()之类的get参数来访问正确的params,以确保可以看到get params,如果在进入actionSubmit()之前又想过另一个动作,则GET参数也会丢失。通过打印\Yii::$app->request来检查引荐来源网址可以帮助您快速查看之前的位置。

相关问题