특정 쿼리를 xml 파일로 내보낼 필요가 있습니다. 나는 파일이 만들어지고 데이터가 반출된다는 점에서이 작업을 수행하지만 파일이 반출되고 표시되지 않으므로 화면에 다음 오류가 표시됩니다.Zend Framework에서 Doctrine 쿼리 결과를 XML 파일로 내 보냅니다.
This page contains the following errors:
error on line 3 at column 1: Extra content at the end of the document
난 당신의 대부분은 알고하지만 난 내 보낸 단지 보고서가 저장되어있는 사용자에게 확인 메시지를 표시하거나 생각 할 수있는 방법이 나는이에 새로 온 것을 인정한다 나는 이것에 대해 완전히 잘못된 길로 가겠습니까?
내 코드
내 컨트롤러
public function init()
{
// allow certain reports to be exported to xml
// initialize context switch helper
$contextSwitch = $this->_helper->getHelper('contextSwitch');
$contextSwitch->addActionContext('newsletterexport', 'xml')
->initContext();
}
public function newsletterexportAction()
{
$q = Doctrine_Query::create()
->select('c.firstname,c.lastname,c.address1,c.address2,c.address3,t.county')
->from('PetManager_Model_Clients c')
->leftJoin('c.PetManager_Model_Counties t')
->where('c.consentToNews=1');
$result = $q->fetchArray();
if (count($result) >= 1) {
$this -> view -> records = $result;
}
}
편집 아래
제안 내가 내 컨트롤러에 xml.phtml의 코드를 이동하려고 좋아 저장을 사용하여 문서를 저장하려고했지만 이제는 XML 문서의 시작 부분이 나타납니다. 아래 그림과 같이 문서는 저장되지만 레코드는 문서에 저장되지 않습니다.
public function newsletterexportAction()
{
$q = Doctrine_Query::create()
->select('c.firstname,c.lastname,c.address1,c.address2,c.address3,t.county')
->from('PetManager_Model_Clients c')
->leftJoin('c.PetManager_Model_Counties t')
->where('c.consentToNews=1');
$result = $q->fetchArray();
if (count($result) >= 1) {
//$this -> view -> records = $result;
$docpref="newsletterexport";
$docDate=date('y-m-d');
$ext=".xml";
$docname=$docpref.$docDate.$ext;
// create XML document
$dom = new DOMDocument('1.0', 'utf-8');
// create root element
$root = $dom->createElementNS('http://petmanager','petmanager:document');
$dom->appendChild($root);
// convert to SimpleXML
$xml = simplexml_import_dom($dom);
// add resultset elements
$records = $xml->addChild('records');
foreach($this->$result as $r){
$record = $records->addChild('record');
$record->addChild('firstName',$this->escape($r['firstName']));
$record->addChild('lastName',$this->escape($r['lastName']));
$record->addChild('address1',$this->escape($r['address1']));
$record->addChild('address2',$this->escape($r['address2']));
$record->addChild('address3',$this->escape($r['address3']));
$record->addChild('county',$this->escape($r['PetManager_Model_Counties']['county']));
}//end of foreach
// saave document
$xml->saveXML();
$dom->save('D:/reports/exports/'.$docname.'');
}
답장을 보내 주셔서 감사합니다. 개발중인 앱이 인트라넷에서 실행되므로 파일에 관리자가 액세스 할 수 있습니다. 나는 당신의 제안을 시도했지만 그것은 나를 위해 일하고있는 것 같지 않습니다, 죄송합니다. xml 파일을 만드는 것과 관련하여 PHP와 XML을 사용 해보지 않았습니다. – Graham
@Graham : 컨텍스트 전환을 해제 했습니까? 파일을 저장 했습니까? 어떤 오류가 있었습니까? – prodigitalson
답장을 보내 주셔서 감사합니다. 컨텍스트 스위치를 껐습니다. 위의 코드를 phtml 파일로 옮겨서 작동 시켰습니다. 컨트롤러에서 작동하지 않는 phtml 파일로 이동했습니다. – Graham