我正在使用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中,但它不起作用,我不知道为什么。任何的想法?我想Idat.xml会保存在Symfony / web中,据我所知,我有权写入这个文件夹。