私は、スリムフレームワークAPIで通信するモバイルアプリケーションを開発しています。このAPIは、最も単純な属性だけでなく、「fk_login_cidadao」に含まれるすべての属性を読み取るために必要です。これはスリムを使用していますか?私はすでにオブジェクト内の属性にgetParam()を使ってキャプチャを試みましたが、うまくいきませんでした。phpとslim-frameworkを使って "fk_login_cidadao"の属性を取得する方法は?
これは、要求のための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 \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use App\Models\Entity\Login;
use App\Models\Entity\Cidadao;
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('App\Models\Entity\Login');
//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();
JSONは右、あなたのAPIに送信された後のデータのですか?また、問題がある部分は '$ login - > setLogin($ request-> getParam( 'login'))です。 $ login - > setEmail($ request-> getParam( 'email')); ... '? – Nima
はい、エラーがあることは分かります。$ login - > setLogin($ request-> getParam( 'login')); $ JSONは私のアプリケーションのモバイルでgson/retrofit2のlibから作られているので、このJSONは私のJAVAクラスと私の表現です($ request-> getParam( 'email')); ...)どのようにオブジェクト "fk_login_cidadao"を読み取るかわからない... –