Расширение пакетов в Symfony2 BeSimpleSoapBundle

Я работаю над своим первым «настоящим» проектом Symfony, который представляет собой SOAP API. Я нашел BeSimple SoapBundle и хочу добавить в него несколько сложных типов, которые, как представляется, не поддерживаются пакетом. Среди прочего я хочу переопределить следующую функцию в классе Dumper:

protected function addComplexType(ComplexType $type)
{

}

Он находится здесь: besimple / soap-wsdl / BeSimple / SoapWsdl / Dumper / Dumper.php

Я сделал следующее.

Я создал src / Webstuff / SoapBundle / SoapWsdl / Dumper / Dumper.php

Который содержит:

<?php
namespace Webstuff\SoapBundle\SoapWsdl\Dumper;

use BeSimple\SoapWsdl\Dumper as BaseDumper;
use BeSimple\SoapCommon\Definition\Definition;

class Dumper extends BaseDumper
{

public function __construct(Definition $definition, array $options = array())
{
echo 'CHECK';
exit;
}

}

?>

Я также добавил это в WebstuffSoapBundle.php

public function getParent(){
return 'BeSimpleSoapBundle';
}

При посещении моего пути wsdl я ожидал увидеть CHECK. Но он просто загружает wsdl, поэтому эта настройка не работает. Я довольно новичок в Symfony, поэтому я могу упустить что-то очевидное.

Надеюсь, кто-то может дать мне толчок в правильном направлении! Спасибо!

0

Решение

Вам нужно:
I. Расширить WebServiceContext (расположен как: besimple / мыло / SRC / BeSimple / SoapBundle / WebServiceContext.php), чтобы иметь возможность использовать свой самосвал вgetWsdlFile«метод вместо родительского дампера.

Например.:

<?php
//Overriding WebServiceContext

namespace Webstuff\SoapBundle;

use Webstuff\SoapBundle\SoapWsdl\Dumper\Dumper;
use Symfony\Component\Config\ConfigCache;

class WebServiceContext extends \BeSimple\SoapBundle\WebServiceContext
{
private $options;

public function __construct($loader, $converters, $options)
{
$this->options = $options;
return  parent::__construct($loader,$converters,$options);
}

public function getWsdlFile($endpoint = null)
{
$file      = sprintf ('%s/%s.%s.wsdl', $this->options['cache_dir'], $this->options['name'], md5($endpoint));

$cache = new ConfigCache($file, $this->options['debug']);
if(!$cache->isFresh()) {
$definition = $this->getServiceDefinition();

if ($endpoint) {
$definition->setOption('location', $endpoint);
}

$dumper = new Dumper($definition, array('stylesheet' => $this->options['wsdl_stylesheet']));

$cache->write($dumper->dump());
}
return (string) $cache;
}
}
?php>

II. Задавать «besimple.soap.context.classпараметр в config.yml ссылаться на ваш класс, который расширяется WebServiceContext,

Например.:

# app/config/config.yml
parameters:
besimple.soap.context.class: "Webstuff\SoapBundle\WebServiceContext"
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]