通过XML-RPC创建Drupal节点时,Image Field参数在其他人参与时不提交

时间:2016-07-26 04:18:04

标签: drupal-7 xml-rpc

我正在测试 XML-RPC 使用发帖人(Chrome扩展程序)创建 drupal 节点并成功完成接收 200 好的。但问题是一个名为" field_answer_with_image"的特定领域。在我创建的节点中仍然是空白的。我认为我的结构有问题。 这是field_answer_with_image的分类。 enter image description here

这是我创建节点的xml结构。

<?xml version="1.0" encoding="UTF-8"?><methodCall>
<methodName>node.create</methodName>
<params>
<param>
 <value>
  <struct>
   <member>
    <name>field_category</name>
    <value>
    <struct>
    <member>
     <name>und</name>
     <value>
      <array>
       <data>
        <value>
          <string>23</string>
        </value>
       </data>
      </array>
     </value>
     </member>
     </struct>
     </value>
     </member>
     <member>
     <name>field_email</name>
     <value>
     <string>mspiral.zwh@gmail.com</string>
     </value>
     </member>
     <member>
     <name>body</name>
     <value>
     <struct>
     <member>
     <name>und</name>
     <value>
     <array>
     <data>
     <value>
     <struct>
     <member>
     <name>value</name>
     <value>
     <string>test yoo</string>
     </value>
     </member>
     </struct>
     </value>
     </data>
     </array>
     </value>
     </member>
     </struct>
     </value>
     </member>
     <member>
     <name>type</name>
     <value>
     <string>question</string>
     </value>
     </member>
     <member>
     <name>field_answer_with_image</name>
     <value>
     <struct>
     <member>
     <name>und</name>
     <value>
     <array>
     <data>
     <value>
     <struct>
     <member>
     <name>filemime</name>
     <value>
     <string>image/jpeg</string>
     </value>
     </member>
     <member>
     <name>
     title
     </name>
     <value>
     <string>
     </string>
     </value>
     </member>
     <member>
     <name>filename</name>
     <value><string>GW_temp.jpeg</string></value>
     </member>
     <member>
     <name>status</name>
     <value><string>1</string></value>
     </member>
     <member>
     <name>fid</name>
     <value><string>1611</string></value>
     </member>
     <member>
     <name>height</name>
     <value><string></string></value></member>
     <member>
     <name>width</name><value><string></string></value></member><member>
     <name>timestamp</name><value><string>1469009864</string></value></member><member>
     <name>filesize</name><value><string>10664</string></value></member><member>
     <name>uid</name><value><string>1543</string></value></member><member>
     <name>alt</name><value><string></string></value></member><member>
     <name>rdf_mapping</name><value><string></string></value></member><member>
     <name>uri</name><value><string>public://GW_temp_1.jpeg</string></value></member>
     </struct>
     </value>
     </data>
     </array>
     </value>
     </member></struct></value></member>
     <member><name>field_name</name><value><string>cristy</string></value></member></struct></value></param>

1 个答案:

答案 0 :(得分:1)

您需要先创建图像,然后在第二步中使用文件ID创建节点。

第1步:

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
   <methodName>file.create</methodName>
   <params>
      <param>
         <value>
            <struct>
               <member>
                  <name>filename</name>
                  <value>
                     <string>Dummy.jpg</string>
                  </value>
               </member>
               <member>
                  <name>filesize</name>
                  <value>
                     <int>440048</int>
                  </value>
               </member>
               <member>
                  <name>file</name>
                  <value>
                     <string>$BASE64$</string>
                  </value>
               </member>
               <member>
                  <name>filepath</name>
                  <value>
                     <string>public://Dummy.jpg</string>
                  </value>
               </member>
            </struct>
         </value>
      </param>
   </params>
</methodCall>

这将返回带有“fid”字段的XML值。找到匹配的'value',一个整数。

然后在步骤2中创建节点(假设fid = 170):

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
   <methodName>node.create</methodName>
   <params>
      <param>
         <value>
            <struct>
               <member>
                  <name>type</name>
                  <value>
                     <string>dummy_content_type</string>
                  </value>
               </member>
               <member>
                  <name>title</name>
                  <value>
                     <string>Dummy&gt; 123456</string>
                  </value>
               </member>
               <member>
                  <name>field_dummy</name>
                  <value>
                     <struct>
                        <member>
                           <name>und</name>
                           <value>
                              <array>
                                 <data>
                                    <value>
                                       <struct>
                                          <member>
                                             <name>type</name>
                                             <value>
                                                <string>image</string>
                                             </value>
                                          </member>
                                          <member>
                                             <name>fid</name>
                                             <value>
                                                <string>170</string>
                                             </value>
                                          </member>
                                          <member>
                                             <name>uid</name>
                                             <value>
                                                <string>1</string>
                                             </value>
                                          </member>
                                          <member>
                                             <name>filename</name>
                                             <value>
                                                <string>Dummy.jpg</string>
                                             </value>
                                          </member>
                                          <member>
                                             <name>filesize</name>
                                             <value>
                                                <string>44408</string>
                                             </value>
                                          </member>
                                          <member>
                                             <name>filepath</name>
                                             <value>
                                                <string>public://Dummy.jpg</string>
                                             </value>
                                          </member>
                                       </struct>
                                    </value>
                                 </data>
                              </array>
                           </value>
                        </member>
                     </struct>
                  </value>
               </member>
            </struct>
         </value>
      </param>
   </params>
</methodCall>

这将返回与前一个帖子请求类似的节点ID。

在Drupal 7中工作。