0

SOAP クライアントとサーバーを作成し、サンプル クラスを追加しました。これは、メソッドによって検出された教義から結果を返します。ただし、これをオブジェクトの永続化またはフラッシュに変更すると、エラー:

私の石鹸サーバー: (石鹸コントローラー)

public function server()
{
    if (is_null($this->getRequest()->getParam('wsdl'))) {
         $server = new Zend_Soap_Server('http://localhost/soap?wsdl');
         $server->setClass('Private\Library\Repo\Users');
         $server->handle();
    } else {
         $wsdl = new Zend_Soap_AutoDiscover();
         $wsdl->setClass('Private\Library\Repo\Users');
         $wsdl->handle();
    }
}

public function client()
{
    $client = new Zend_Soap_Client('http://localhost/soap?wsdl');
    $result = $client->updateUser();
}

電話をかけると、次のようになります。

メッセージ: 不明なエラー

スタックトレース:

#0 /library/Zend/Soap/Client.php(1121): SoapClient->__soapCall('updateUser', Array, NULL, NULL, Array)

私の updateDoc クラスには、標準的な教義の更新があります。

public function updateUser(){   $userEntity =

$this->em->getRepository("Application\Entities\Members")->findOneById(23); $userEntity->first_name = "更新されたファーストネーム";
$this->em->persist($userEntity); $this->em->flush(); }

ただし、 my を呼び出すとgetUser():

public function getUser()
{
    $userEntity = $this->em->getRepository("Application\Entities\Members")->findOneById(23);
    return $userEntity;
}

それは石鹸の不明なエラーなしで動作します..

$userEntity->first_name = "更新された名";

エラーなしで動作しますが、明らかに、エンティティを更新しません...そのエンティティにもプライベートプロパティがあります。それが違いを生むかどうかわからない

更新: また、エンティティを現在のものと同じ値で更新すると、機能することに気付きました...たとえば、 lastname = 'alison' 、 $entity->lastname = 'alison' を更新します...それは機能しますが、別の姓に変更しても機能しません..ドクトリンエラーはありません....また、アプリ内の任意のコントローラーまたはモデルで同じ関数を使用してこのエンティティを変更できます

4

1 に答える 1

0

修正...石鹸を使用している場合、セッションがありません。すべての更新をログに記録するため、ユーザーエンティティには有効なセッションが必要でした..

于 2012-10-03T17:08:00.013 に答える