2012-05-07 10 views
0

私はSymfony2を使ってアプリケーションを開発しています。私が持っている問題は、ページコントローラから呼び出されたリポジトリから関数を実行するときに、関数がXMLファイルを保存することになっていますが、XMLファイルが保存されていないため、その理由がわかりません。これは、リポジトリからの関数である。Symfony2リポジトリからxmlファイルを保存する

public function IdaztekoaSortu($Hitzak, $Coref) 
    { 
    $EmaitzaXML = new \DOMDocument("1.0"); 
    header("Content-Type: text/plain"); 
    // erroa sortu 
    $erroa = $EmaitzaXML->createElement("Idaztekoa"); 
    $EmaitzaXML->appendChild($erroa); 
    $EmaitzaXML->formatOutput = true; 

    $xmlHitzakDok = new \DOMDocument(); 
    $xmlMarkDok = new \DOMDocument(); 
    if($xmlHitzakDok->load($Hitzak) === FALSE){die('Errorea hitzen xml-a kargatzean');} 
    if($xmlMarkDok->load($Coref) === FALSE){die('Errorea markagarrien xml-a kargatzean');} 
    $xPath_Hitzak = new DOMXPath($xmlHitzakDok); 
    $xPath_Mark = new DOMXPath($xmlMarkDok); 
    $xPath = new DOMXPath($xmlHitzakDok); 

    $Hurrengo_HitzaID = "word_1"; 
    $Hurrengo_Hitza_index = 1; 

    foreach ($xPath_Hitzak->query('//words/word') AS $Hitza) 
    { 
     $HitzaID = $Hitza->getAttribute('id'); 

    if ($HitzaID == $Hurrengo_HitzaID) 
    { 
     $Handiena_MarkID = 0; 
      $Handiena_Hitzarentzat = -1; 
      $Hitza_Index = substr($HitzaID , 5); 

      foreach ($xPath_Mark->query('//markables/markable') AS $Markagarria) 
       { 
      $MarkID = $Markagarria->getAttribute('id'); 
      $Zatiak = explode("..", $Markagarria->getAttribute('span')); 
      $MarkSpan1 = substr($Zatiak[0],5); 
       $MarkSpan2 = substr($Zatiak[1],5); 
      $MarkSpan1ID = "word_" . $MarkSpan1; 

      if ($MarkSpan1ID == $HitzaID && $MarkSpan2-$MarkSpan1 > $Handiena_Hitzarentzat) 
      { 
       $Handiena_MarkID = $Markagarria->getAttribute('id');     
         $Handiena_Hitzarentzat = $MarkSpan2-$MarkSpan1; 
       $Handiena_MarkSpan1 = $MarkSpan1; 
       $Handiena_MarkSpan2 = $MarkSpan2; 
      } 
      } 
       if($Handiena_Hitzarentzat == -1) 
       {//Ez daude inongo markagarritan 
     $x = $Hitza_Index+1; 
      $Hurrengo_HitzaID = "word_" . $x; 
     // umea sortu 
     $elem = $EmaitzaXML->createElement("testua"); 
     $erroa->appendChild($elem); 
     // testu nodoa sortu 
     $testua = $EmaitzaXML->createTextNode($Hitza->nodeValue. " "); 
     $elem->appendChild($testua); 
     // atributu nodoa sortu 
     $Mark_id = $EmaitzaXML->createAttribute("Mark_id"); 
     $elem->appendChild($Mark_id); 
     // atributu balio nodoa sortu 
     $gauzabalioa = $EmaitzaXML->createTextNode("null"); 
     $Mark_id->appendChild($gauzabalioa); 
       } 
      else 
      {//Markagarri batean daude 
     $y = $Handiena_MarkSpan2+1; 
      $Hurrengo_HitzaID = "word_" . $y; 
     // umea sortu 
     $elem = $EmaitzaXML->createElement("testua"); 
     $erroa->appendChild($elem); 
     // testu nodoa sortu 
     for ($i = $Handiena_MarkSpan1; $i <= $Handiena_MarkSpan2; $i++) 
     { 
        foreach ($xPath->query('//words/word') AS $Hitz) 
        { 
        $ID = $Hitz->getAttribute('id'); 
      $ID_Index = substr($ID , 5); 
       if ($ID_Index == $i) 
       { 
        $testua = $EmaitzaXML->createTextNode($Hitz->nodeValue . " "); 
        $elem->appendChild($testua); 
      } 
      } 
     } 
      // atributu nodoa sortu 
      $Mark_id = $EmaitzaXML->createAttribute("Mark_id"); 
      $elem->appendChild($Mark_id); 
      // atributu balio nodoa sortu 
      $gauzabalioa = $EmaitzaXML->createTextNode($Handiena_MarkID); 
      $Mark_id->appendChild($gauzabalioa); 
      // atributu nodoa sortu 
      $Hitz_kop = $EmaitzaXML->createAttribute("Hitz_kop"); 
      $elem->appendChild($Hitz_kop); 
      // atributu balio nodoa sortu 
      $hitzkopbalioa = $EmaitzaXML->createTextNode($Handiena_MarkSpan2-$Handiena_MarkSpan1+1); 
      $Hitz_kop->appendChild($hitzkopbalioa); 

        // atributu nodoa sortu 
        $MSpan1 = $EmaitzaXML->createAttribute("MarkSpan1"); 
        $elem->appendChild($MSpan1); 
        // atributu balio nodoa sortu 
        $MSpan1balioa = $EmaitzaXML->createTextNode($Handiena_MarkSpan1); 
        $MSpan1->appendChild($MSpan1balioa); 
        // atributu nodoa sortu 
        $MSpan2 = $EmaitzaXML->createAttribute("MarkSpan2"); 
        $elem->appendChild($MSpan2); 
        // atributu balio nodoa sortu 
        $MSpan2balioa = $EmaitzaXML->createTextNode($Handiena_MarkSpan2); 
        $MSpan2->appendChild($MSpan2balioa);  
      } 
      } 
    } 
    // zuhaitza fitxategian gorde 
    $EmaitzaXML->save('Idat.xml'); 
    } 

あなたはXMLツリーがIdat.xmlに保存する必要がありますが、それは仕事をdoesntのと私はなぜ知らない見ることができるように。何か案が?私はIdat.xmlがSymfony/webに保存されていると思いますが、私が知っている限り、このフォルダに書き込む権限があります。

答えて

0

完全パスを使用する必要があります。/webフォルダへのパスを取得する方法here

+0

この$ EmaitzaXML-> save($ this-> get( 'kernel') - > getRootDir()。 '/ Idat.xml');それはうまくいっていませんでした。他の方法で試しましたが、Idat.xmlファイルが保存されませんでした。任意のアイデア@ a.tereschenkov? – Haritz

+0

なぜheader( "Content-Type:text/plain")を使用しますか?この関数では?私にとってはあなたはここでそれを必要としません。また、コントローラや他のコンポーネントからのみ$ this-> get( 'kernel')を使うこともできます。カスタムクラスでそれを使用すると、動作しません。 $ this-> get( 'kernel') - > getRootDir()をエコーし​​て正しいかどうかを調べることができます。 –

関連する問題