Witam,
chciałem zobaczyć jak Symfony2 poradzi sobie jako API i w tym celu chciałem wykorzystać ActionScript3.0 + Symfony2 (PHP) więc mam sobie jakąś aplikację, która wysyła z flasha json ( { id:1 } )
więc flash oczekuje wszystkich kolumn, które należą do ID = 1. Jako z tym nie mam problemu, bo normalnie mogę zrobić to tak:
$json = json_decode($_POST['data']); //odebranie json z flash
$query = mysql_query("SELECT * FROM user WHERE id=$json->id"); //zapytanie do bazy
{
'user' => $data,
);
} //uzupełnienie tablicy $object danymi z bazy
print json_encode
($object); //zwrócenie json do flasha
ale jak to samo zrobić w Symfony2 ?
<?php
namespace SimonMedia\ApiBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
class DefaultController extends Controller
{
/**
* @Route("/")
* @Template()
*/
public function indexAction()
{
}
/**
* @Route("/user/get/all")
*/
public function getAll()
{
$em = $this->getDoctrine()->getEntityManager();
$entities = $em->getRepository('SimonMediaApiBundle:Userzy')->findAll();
}
}
var_dump zwraca
0 =>
object(SimonMedia\ApiBundle\Entity\Userzy)[211]
private 'id' => int 1
private 'name' => string 'Janusz' (length=6)
private 'email' => string 'Janko@wp.pl' (length=11)
private 'phone' => string '668559634' (length=9)
1 =>
object(SimonMedia\ApiBundle\Entity\Userzy)[206]
private 'id' => int 2
private 'name' => string 'Marek' (length=5)
private 'email' => string 'Maro@wp.pl' (length=10)
private 'phone' => string '665583999' (length=9)
2 =>
object(SimonMedia\ApiBundle\Entity\Userzy)[207]
private 'id' => int 3
private 'name' => string 'Mariusz' (length=7)
private 'email' => string 'Mario@wp.pl' (length=11)
private 'phone' => string '994888777' (length=9)
Ale nijak nie potrafię się po tym ruszyć...
EDIT::
Doszedłem do tego, że po zmianie w klasie Userzy.php (entity) z private na public mam dostęp do np
print $entities[0]->name;
w przeciwnym razie otrzymuję error
Cannot access private property SimonMedia\ApiBundle\Entity\Userzy::$name in F:\WORK\labs\Symfony\ApiID\src\SimonMedia\ApiBundle\Controller\DefaultController.php on line 28
Ale chyba taka zmiana nie jest dobra i nie na tym to ma polegać ?
Ten post edytował Szymciosek 16.09.2012, 11:06:44