亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Symfony - 日期時間作為參數

Symfony - 日期時間作為參數

PHP
Helenr 2021-11-05 15:44:51
我無法使用 Symfony 定義我的日期時間參數。如果 last_scan_date 為空,我試圖返回空,如果不返回結果!錯誤說:傳遞給 checkLastScan() 的參數 2 必須是 DateTime 的實例,給出的字符串我的功能:public function checkLastScan($hash, \DateTime $lastScanDate){    $findLastScan = $this->getMyRepository()->findOneBy([        'hash' => $hash,        'lastScanDate' => $lastScanDate    ]);    if (!$findLastScan) {        throw new \Exception('Not found!');    }    if ($lastScanDate === null) {        return null;    } else {        return $findLastScan;    }}和我的電話:$this->requirePostParams(['hash', 'last_scan_date']);$this->container->get('app')->checkLastScan(        $this->data['hash'],        $this->data['last_scan_date']    );    return $this->success();和實體:/** * @ORM\Column(name="last_scan_date", type="date", nullable=true) */private $lastScanDate;也許問題是在需要 post params 時,例如:/** * Require post params * * @param $params */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;        }    }
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

如果$this->data(我一開始問,但您沒有正確回答我)只是 POST 數組,當然該數組的所有成員都被視為字符串。


您必須解析last_scan_date字符串并將其轉換為 DateTime 類型。


這是函數的代碼(將 YOUR_POST_FORMAT 的值更改為您在 HTML 表單中使用的格式):


/**

 * Require post params

 *

 * @param $params

 */

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;

    }


    // HERE YOU PARSE STRING TO DATETIME TYPE

    if (isset($postData['last_scan_date']) && !empty($postData['last_scan_date'])) {

        $postData['last_scan_date'] = DateTime::createFromFormat('YOUR POST FORMAT', $postData['last_scan_date'])

    } else {

        $postData['last_scan_date'] = null;

    }


    $this->data = $postData;


    $missingParams = [];


    foreach ($params as $param) {

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

            $missingParams[] = $param;

        }

    }

}


查看完整回答
反對 回復 2021-11-05
  • 1 回答
  • 0 關注
  • 187 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號