【问题标题】:JSON Response includes function in PHPJSON 响应包含 PHP 中的函数
【发布时间】:2019-09-24 06:02:12
【问题描述】:

我有一个具有 JSON 响应的 PHP 代码。

我需要将['name' => $message->getName(), 'mes' => $message->getMes(), 'update_time' => $message->getUpdateTime()->format('Y-m-d H:i:s')] 分离成一个独立的函数。 当我需要时,我可以调用它。

但是,我不知道该怎么做。

这是我的控制器

/**
* @Route("/message/board/reset/{id}", name = "message_reset", requirements = {"id" = "\d+"})
*/
public function editMeg($id)
{
    $entityManager = $this->getDoctrine()->getEntityManager();
    $message = $entityManager->find('MegBundle:message', $id);
    $UserN = $message->getName();
    $UserM = $message->getMes();
    return new JsonResponse(['result' => 'ok', 'ret' => ['name' => $message->getName(), 'mes' => $message->getMes(), 'update_time' => $message->getUpdateTime()->format('Y-m-d H:i:s')]]);
}

我希望这是合理的并且有办法做到这一点。

感谢您的帮助。

我Heop它可以这样

/**
     * @Route("/message/board/updata/{id}", name = "message_updata", requirements = {"id" = "\d+"})
     * @Method("PUT")
     */
    public function updataMeg(Request $request, $id)
    {
        $entityManager = $this->getDoctrine()->getEntityManager();
        $message = $entityManager->find('MegBundle:message', $id);
        $message->setMes($request->request->get("txtMes"));
        $entityManager->flush();
        return new JsonResponse(['result' => 'ok', 'ret' => jsonreturn()]);
    }
    public function jsonreturn()
    {
        $json = 'name' => $message->getName(), 'mes' => $message->getMes(), 'update_time' => $message->getUpdateTime()->format('Y-m-d H:i:s');
    }

【问题讨论】:

  • 我不确定您所说的separate the array into an independent function 是什么意思,您能详细说明您要做什么吗?
  • 现在的情况有什么问题??你期待它是怎样的
  • @catcon 我已经重新编辑了我的问题,谢谢。
  • @JayWadhwa 我已经重新编辑了我的问题,谢谢

标签: php json symfony


【解决方案1】:

也许你想这样做:

private function jsonreturn($message) {
  return ['name' => $message->getName(), 'mes' => $message->getMes(), 'update_time' => $message->getUpdateTime()->format('Y-m-d H:i:s')];
}

只需将$message 对象传递给此函数

【讨论】:

  • 没错,但是当我尝试它时,它显示 {"result":"ok","re​​t":{}}。我 Heop 我可以得到这样的响应 {"result":"ok","re​​t":{"name":"AppelApple","mes":null,"update_time":"2019-09-20 12 :24:46"}}
【解决方案2】:

你需要的格式是json编码,所以你可以试试下面的代码:

private function jsonreturn($message) {
  echo json_encode(['name' => $message->getName(), 'mes' => $message->getMes(), 'update_time' => $message->getUpdateTime()->format('Y-m-d H:i:s')]);
}

json_encode php documentation

【讨论】:

  • 但是当我尝试它时,它显示 {"result":"ok","re​​t":{}} 如何修复它?谢谢
  • 我已经更新了代码,请尝试使用更新后的代码。
  • 当我尝试你的代码并编辑我的控制器时它仍然是一样的return new JsonResponse(['result' => 'ok', 'ret' => $message]); 它显示 {"result":"ok","re​​t":{}}
【解决方案3】:

最后,我试试下面的代码:

controller.php:

/**
* @Route("/message/board/updata/{id}", name = "message_updata", requirements = {"id" = "\d+"})
* @Method("PUT")
*/
public function updataMeg(Request $request, $id)
{
    $entityManager = $this->getDoctrine()->getEntityManager();
    $message = $entityManager->find('MegBundle:message', $id);
    $message->setMes($request->request->get('txtMes'));
    $entityManager->flush();
    $message->toArray($message);
    return new JsonResponse(['result' => 'ok', 'ret' => $message]);
}

entity.php

public function toArray($message)
{
    $this->message = array('name' => $message->getName(), 'mes' => $message->getMes(), 'update_time' => $message->getUpdateTime()->format('Y-m-d H:i:s'));
}

我明白了

{"result":"ok","re​​t":{"message":{"name":"AAA","mes":"test","update_time":"2019-09-25 08: 13:04"}}}

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 2012-11-02
    • 2012-08-26
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2013-10-09
    相关资源
    最近更新 更多