如何使用 PHP 和 slim-Framework 获取 "fk_login_cidadao" 的属性?



我正在开发一个带有纤细框架API通信的移动应用程序,我需要此API不仅能够读取最简单的属性,还可以读取所有部分的属性在" FK_LOGIN_CIDADAO"中,我该如何使用Slim?我已经尝试在对象内的属性上使用getParam()捕获getParam(),但它不起作用。

这是请求的JSON数据:

{"cidade":"Juazeiro do Norte","estado":"Ceará","fk_login_cidadao":{
"administrador":false,
"email":"a",
"login":"a",
"senha":"a",
"status_login":false}, "nome":"a","sexo":"Masculino", "sobrenome":"a"}

这是我处理请求的功能PHP代码:

<?php 
use PsrHttpMessageServerRequestInterface as Request;
use PsrHttpMessageResponseInterface as Response;
use AppModelsEntityLogin;
use AppModelsEntityCidadao;

require 'bootstrap.php';
    $app -> post('/cidadao/cadastrar', function(Request $request, Response $response) use ($app){
    //Container do EntityManager
    $entityManager = $this -> get('em');
    try{
      //Instância da entidade Login
        $login = new Login();
        //setando valores do objeto login
                $login ->setLogin($request->getParam('login'));
                $login ->setEmail($request->getParam('email'));
                $login ->setSenha($request->getParam('senha'));
                $login ->setStatus_login($request->getParam('status_login'));
                $login ->setAsAdministrador($request->getParam('administrador'));
        //salvando login       
        $entityManager->persist($login);
        $entityManager->flush();
        //buscando login recém salvo
        $loginRepository = $entityManager->getRepository('AppModelsEntityLogin');
        //pegando login
        $loginCidadao = $loginRepository->find($login->getId_login());
        //Instância da entidade Cidadao
        $cidadao = new Cidadao();
        //setando valores do objeto cidadao
               $cidadao ->setFk_login_cidadao($loginCidadao);
               $cidadao->setNome($request->getParam('nome'));
               $cidadao->setSexo($request->getParam('sexo'));
               $cidadao ->setSobrenome($request->getParam('sobrenome'));
               $cidadao ->setEstado($request->getParam('estado'));
               $cidadao ->setCidade($request->getParam('cidade'));
               $cidadao ->setDir_foto_usuario($request->getParam('dir_foto_usuario'));
        //salvando cidadao
        $entityManager->persist($cidadao);
        $entityManager->flush();
        //retornando confirmação do evento completo
        return $response->withJson(["int" =>(int)'1'],200);
    } catch (Exception $e){
        //código e mensagem do erro
        $error = array (
            'Code:' => $e->getCode(),
            'Message' => $e->getMessage()
        );
        //retornando o erro ao cliente
        return $response->withJson($error);
    }
});
$app->run();

根据有关请求body的细长文档

JSON请求与JSON_DECODE($ INPUT,true)转换为关联数组。

$request->getParam('fk_login_cidadao')应该为您提供一个与您需要的密钥的关联数组。

所以而不是

$login ->setLogin($request->getParam('login'));
$login ->setEmail($request->getParam('email'));
$login ->setSenha($request->getParam('senha'));
$login ->setStatus_login($request->getParam('status_login'));
$login ->setAsAdministrador($request->getParam('administrador'));

尝试:

$fk_login_cidadao = $request->getParam('fk_login_cidadao');
$login ->setLogin($fk_login_cidadao['login']);
$login ->setEmail($fk_login_cidadao['email']);
$login ->setSenha($fk_login_cidadao['senha']);
$login ->setStatus_login($fk_login_cidadao['status_login']);
$login ->setAsAdministrador($fk_login_cidadao['administrador']);

最新更新