2013-07-16 30 views
0

我試圖將cakephp請求對象中的所有表單數據轉換爲xml,然後將其轉換爲字符串,以便我可以將它放在mysql中的一個(blob)列中表。在cakephp中將表單請求數據轉換爲xml

我想在CakePHP 2.x.x中使用buildin xml構建器來執行此操作,如下所示,但出現錯誤。

if ($this->request->is('post')) { 
      $this->Survey->create();     
         $xml = Xml::build($this->request->data); 

} 

的形式示出下面

<?php echo $this->Form->create('Survey'); ?> 
    <fieldset> 
     <legend><?php echo __('Add Survey'); ?></legend> 
    <?php 

       echo $this->Form->input('Question 1'); 
       echo $this->Form->input('Question 2'); 
       echo $this->Form->input('Question 3'); 

    ?> 
    </fieldset> 
<?php echo $this->Form->end(__('Submit')); ?> 

我發現了該錯誤似乎是由於DOCDocument->的createElement(字符串,字符串)在堆棧跟蹤。我也使用過其他方法,包括手動構建,如下所示:

   $doc = new DOMDocument('1.0'); 
       $doc->formatOutput = true; 
       $doc->loadHTML($this->request->data); 

       $data = $this->request->input('Xml::build', 
         array('return' => 'domdocument')); 

       while(list($key,$value) = each($this->request->data)){ 
        $data = $data . $key . $value; 
       } 

       if(isset($this->request->data)){ 
        $doc = new DOMDocument('1.0'); 
        $doc->formatOutput = true; 
        $root = $doc->appendChild($doc->createElement('survey')); 


        $post = $this->request->data['Survey']; 
        unset($post['submit']); 

        foreach($post as $key => $value){ 
         $node = $doc->createElement($key,$value); 
         $root->appendChild($node); 
        } 

        $test1 = $doc->saveXML(); 

任何幫助,將不勝感激。謝謝。

回答

0

See將數組轉換爲XML部分的字符串。

+0

我收到錯誤消息。它說,當我做$ xml = Xml :: build($ this-> request-> data,array('return'=>'simplexml'))時發生內部錯誤。 – Hairlock

+0

沒關係,我更仔細地閱讀文檔,並意識到我發送了無效的xml。感謝您的回覆。 – Hairlock