Я изо всех сил пытаюсь вернуть экземпляр класса flex к Amfphp (v2.2)
Упрощенный код во Flex:
[RemoteClass(alias="Project")]
public class Project
{
public function Project()
{
}
}
Код в php:
class Project {
var $_explicitType = "Project";
public function foo()
{
return "bar";
}
}
В какой-то момент я отправляю этот код на сервер:
myRemoteObjectService.testMethod(myProjectInstance);
Который обрабатывается в PHP так:
public function testMethod($projectInstance)
{
return $projectInstance->foo;
}
Это должно вернуть ‘bar’ моему приложению Flex, но вместо этого я получаю
faultCode: Channel.Call.Failed faultString: ‘error’ faultDetail: ‘NetConnection.Call.Failed: HTTP: Status 500’
Что работает, так это:
public function testMethod()
{
$project = new Project();
return $project->foo;
}
Любая помощь будет очень ценится!
Dany
Нашел ответ:
Стандартное местоположение для объектов VO / Услуги / Vo /
В моем случае мои объекты vo, где в / dto /
Когда я помещал все свои объекты vo в / Services / Vo /, все работало как положено.
НО
Я попытался установить / dto / в конфигурации, используя:
$this->voFolders = array(AMFPHP_ROOTPATH . 'dto/');
И это не сработало.
Так:
Vo конвертация осуществляется с помощью плагина Vo конвертера. Это описано здесь http://www.silexlabs.org/amfphp/documentation/plugins/plugins-distributed-with-amfphp/vo-converter/
Попробуйте что-то подобное в вашей конфигурации
$this->pluginsConfig["AmfphpCustomClassConverter"] = array(“customClassFolderPaths” => array(AMFPHP_ROOTPATH . “MyVoFolder”));