Utilizzare la risorsa nodo Servizi-3.x per creare un nuovo inedito * * nodo

drupal.stackexchange https://drupal.stackexchange.com/questions/18800

  •  22-10-2019
  •  | 
  •  

Domanda

C'è un modo che posso forzare un nodo per essere inediti utilizzando la risorsa nodo?

Requisiti: sito definisce un tipo di contenuto 'voce' che viene pubblicato per impostazione predefinita. Sito B ha bisogno di creare 'voce' nodi su A, e questi nodi creati automaticamente devono essere inedite.

function toolreq_test_create() {
$toolreq_endpoint = variable_get("toolreq_endpoint", "");
$options = toolreq_service_login();
if (!is_array($options)) {
    print "error<p>";
    return;
}
//create a node

$node_data = array(
                      "title"=>"DHC Tool 04 dev",
                      "type"=>"item",
                      //"status"=> FALSE, //ensure unpublished
                      "status" => 0,
                      "language" => "und", //lanugage neutral
                      "field_webpage"=>array(
                                                  "und"=>array(0=>array("url"=>"http://berkeley.edu",)
)
)
);

//use json
$options['headers']['content-type'] = "application/json";
$options['method'] = 'POST';
$options['data'] = json_encode($node_data);
$request = drupal_http_request($toolreq_endpoint . '/node', $options);
}

Dal campo di stato della tabella nodo è il tipo mysql INT (con un predefinito di 1), penserei che avrei potuto passare status => 0 in quanto sopra codice, ma a fare che si traduce in un pubblicato nodo. Ho cercato di passaggio 0 utilizzando sia JSON e dati x-www-form-urlencoded.

Se uso status => FALSE e utilizzare JSON, il nodo viene creato come inedito, ma penso che questo equivale a inserire '' nel campo node.status che si traduce in un avvertimento mysql:

mysql> INSERT INTO `bamboodirt`.`node` (`nid`, `vid`, `type`, `language`, `title`, `uid`,
`status`, `created`, `changed`, `comment`, `promote`, `sticky`, `tnid`, `translate`) 
VALUES (NULL, 21, 'item', 'und', 'sql insert test', '0', '', '0', '0', '0', '0', '0', '0', 
'0');
Query OK, 1 row affected, 1 warning (0.03 sec)

mysql> SHOW WARNINGS
+---------+------+----------------------------------------------------------+
| Level   | Code | Message                                                  |
+---------+------+----------------------------------------------------------+
| Warning | 1366 | Incorrect integer value: '' for column 'status' at row 1 |
+---------+------+----------------------------------------------------------+

Vorrei vivere con questo avvertimento, ma mysql del mio provider è meno permissiva e ottengo un (node_save Durning () credo) l'errore reale su quel server:

"SQLSTATE [HY000]: Errore generale: 1366 valore intero non corretto: '' per la colonna 'status' alla riga 1"

(Ecco il filo sopra al Pantheon http://help.getpantheon.com/pantheon/topics / json_node_create_works_on_localstack_fails_with_error_500_on_pantheon .)

C'è un modo che posso forzare un nodo per essere inediti utilizzando la risorsa nodo, o devo scrivere il mio risorsa?

È stato utile?

Soluzione

Prova impostando il campo 'status' di TRUE o FALSE invece di 0 o 1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a drupal.stackexchange
scroll top