dados drupal HTTP POST

7

Como envio dados HTTP POST / GET para o drupal?

por exemplo: eu tenho um formulário html:

<form action="mydrupalcite.com" method="get">
    <input type="text" name="title" />
</form>

como faço para colocar os titledados no módulo de respostas do drupal? (ou qualquer módulo?)

Estou procurando a maneira drupal de fazer isso (eu sou relativamente novo no Drupal e como ele realmente funciona)

Isso tem algo a ver com o módulo Serviços?

tom91136
fonte
Eu realmente não estou olhando para a criação de formas, mas o envio de dados a um formulário no Drupal (a forma de módulos de interrogação)
tom91136
Ok, pensei o contrário, verifique a resposta do Clives.
GoodSp33d

Respostas:

6

A API do formulário do Drupal possui proteção CSRF integrada, portanto, o envio de um formulário de um domínio externo não funcionará. Você pode desativar a CSRF (péssima ideia) ou, como sugere, usar o módulo Serviços.

Não existe um mapeamento individual entre o módulo de serviços e os formulários no site, em vez dos módulos implementarem recursos para determinadas tarefas serem consumidas de um cliente externo. Você obtém nó, usuário, termo de taxonomia e provavelmente outros por padrão. Portanto, você pode (por exemplo) adicionar um novo nó / usuário / termo, mas enviando solicitações xml / json / etc ao servidor após a autenticação, e não enviando um formulário como tal.

A obtenção de dados funciona da mesma maneira. Você pode usar os Serviços para fazer isso ou, se conseguir gerenciar / não precisar de sua própria autenticação, consulte a resposta da indrock para um bom método.

Os serviços são muito extensíveis; portanto, mesmo que o módulo de respostas não implemente recursos, é uma tarefa muito fácil adicionar suas próprias funções que envolvem as funções da API a partir do módulo de respostas (ou qualquer outro).

A documentação dos serviços provavelmente seria um bom ponto de partida.

Clive
fonte
6

Você primeiro precisará criar uma página (URL) no Drupal para obter esses parâmetros. Você pode fazer isso implementando hook_menu(), em seu módulo personalizado. Consulte isso para criar seu módulo personalizado .

function MYMODULE_menu() {
  $items['get_details'] = array (
    'title' => '',
    'page callback' => 'MYMODULE_access_variables',
    'page arguments' => array(1),
    'access callback' => TRUE,  // this will be accessible to everyone
  );
  return $items;
}

function MYMODULE_access_variables() {
 // Here you get access to the POSTED variables using $_RESPONSE php superglobal
  echo "<pre>";
  print_r ($_RESPONSE['title']);  // will get you the value of the HTML input type having name='title'
  echo "</pre>"
}

Isso criará uma página no seu site em url http://mydrupalsite.com/get_details

Agora, no seu HTML, faça a chamada como

<form action="mydrupalcite.com/get_details" method="post">
    <input type="text" name="title" /> <!-- Note that the value of the attribute 'name' will be used the capture the value which is posted -->
</form>

NOTA: Conforme a resposta do @ clive, sugiro que você o use apenas para fins educacionais / de desenvolvimento. Isso pode ter implicações de segurança.

AjitS
fonte
11
print_r imprimirá os parâmetros fornecidos no seu site. Se você quiser Drupal para adicionar o resto da página (barras laterais, css, etc), uso algo como isto: pastebin.com/TC1FfPY7
AyeshK
@AyeshK Nice sugestão! Só o valor impresso só para mostrar que os valores poderiam ser acedida no interior da função :)
AjitS