<?php
namespace SymfonyDev\SoapBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class SoapController extends Controller
{
/**
* @Route("/", name="app_red")
* @Route("/login", name="app_red2")
*/
public function redAction(Request $request)
{
return $this->redirect($this->generateUrl('app_security_login'));
}
/**
* @Route("/soap_api", name="soap")
*/
public function indexAction(Request $request)
{
ini_set("soap.wsdl_cache_enabled", 0);
//libxml_disable_entity_loader(true);
$object = $this->get('soap_api');
$object->setRegistry($this->getDoctrine());
$object->setContainer($this->container);
$server = new \Zend\Soap\Server($request->getUriForPath('/soap_api/wsdl'));
$server->setObject($object);
$server->setClass(get_class($object));
$server->setReturnResponse(true);
$response = new Response();
$response->headers->set('Content-Type', 'text/xml;');
$response->setContent($server->handle());
return $response;
}
/**
* @Route("/soap_api/wsdl", name="soap_wsdl")
*/
public function wsdlAction(Request $request)
{
$strategy = new \Zend\Soap\Wsdl\ComplexTypeStrategy\ArrayOfTypeComplex();
$autodiscover = new \Zend\Soap\AutoDiscover($strategy);
$autodiscover->setUri($request->getUriForPath('/soap_api'));
$autodiscover->setClass(get_class($this->get('soap_api')));
return new Response($autodiscover->generate()->toXml(), 200, array('Content-type' => 'text/xml'));
}
}