2

我定义了我想从 db 传递“哈希”值的 postParams。

我想要完成的是,如果我的 Session 表中存在哈希返回 TRUE,如果不返回 FLASE。

问题是我的代码总是返回 TRUE。

我错过了什么?

$postData = $this->requirePostParams(['hash']);

$this->container->get('app')->formService(
        $this->data['hash']
    );

if ($postData['hash']) {

    $hash = $this->get('app')->getSessionRepository()->find($this->data['hash']);

    if (!$hash) return false;

} else {

    return true;

}

我的 requirePostParams 工作正常!(在其他功能上测试)

protected function requirePostParams($params) {

    $currentRequest = $this->get('request_stack')->getCurrentRequest();

    $postData = $currentRequest->request->all();

    $postContent = json_decode($currentRequest->getContent(), true);

    if(!empty($postContent)) $postData = $postContent;

    $this->data = $postData;

    $missingParams = [];

    foreach ($params as $param) {

        if (!array_key_exists($param, $postData)) {

            $missingParams[] = $param;

        }

    }

}

我的服务:

$findHash = $this->getSessionRepository()->findOneBy([
        'hash' => $hash
    ]);
4

1 回答 1

0

正如 xmike 在评论中提到的那样,函数requirePostParams什么也不返回。这就是为什么$postData['hash']永远不会设置。

尝试替换$postData['hash']$this->data['hash']

$this->requirePostParams(['hash']);

$this->container->get('app')->formService(
        $this->data['hash']
    );

if ($this->data['hash']) {

    $hash = $this->get('app')->getSessionRepository()->find($this->data['hash']);

    if (!$hash) return false;

} else {

    return true;

}
于 2019-08-01T14:46:12.403 回答