submit等の扱いに関して

Events happening in the community are now at Drupal community events on www.drupal.org.
redboxhosting's picture

こんにちわ 初歩的な質問で申し訳ありませんが表題の通り、Drupal7にてHTMLタグでSUBMITボタンを作成し、そこからPHPにPOSTするといったHTML+PHPをDRUPAL内で動かそうとしているのですが
うまくいきません。

HTMLページ
コンテンツ→コンテンツの追加からテキストフォーマット をFULL HTMLにしてBODY部にHTMLを入力する

ボタンの部分だけ抜粋

<form method="post" action="test.php" method="post">
<INPUT TYPE = "Text" VALUE ="" NAME = "test size="50">
<input type="submit" value="submit" name="submit">
</form>

PHPページ

同じくテキストフォーマットをPHPコードにしてPHPコードを入れる
URLエイリアスにtest.phpといれる

この状態でHTMLページにアクセスしてSUBMITボタンをおしても何の反応もせず。。普通のHTMLとPHP構成であればしっかり動くため、Drupalでボタンを動かすときだけなにか特殊なことをしなければいけないのではないかとおもうのですが、この部分がわからずアドバイス頂けると助かります。

Comments

form の action

shigehiro's picture

form の action 属性をサイトルート(通常は「/」)からにすると、動くと思いますよ。

ただ Drupal でフォームを扱う場合、より便利で安全な FORM API がありますので、たくさんフォームを作ったりする場合はそれを使うと良いと思います。(※ 少々気合を入れて学ぶ必要がありますが、慣れると本当に便利です。フォーム生成、検証、送信処理で一貫したしくみが使えます。)

https://api.drupal.org/api/drupal/includes!form.inc/group/form_api/7

Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/

shigehiroさん

redboxhosting's picture

ご連絡ありがとうございます。

アドバイス頂いた通り、form の action 属性をスラッシュから初めたり、http://から始まるフルパスで記載したりしましたが、やはりボタンが正常に動作しません。。。

ボタンをおしてもActionで指定したURLやパスに飛んでいないような感じです。

スラッシュをつけた場合

<form method="post" action="/test.php" method="post">

フルパスで入力した場合

<form method="post" action="http://domainname.com/test.php" method="post">

フォーム自体は1つで入力した値をPHPに渡すだけの簡単なものなので、出来ればコピペですませたいのですが、APIを使わないと難しいのでしょうか。

よろしくお願いします。

いえ、特に Drupal の API

shigehiro's picture

いえ、特に Drupal の API を使わなくても(ベタに HTML でフォームを記述しても)、それはそれで普通に動くはずですよ。

やはりボタンが正常に動作しません。。。
ボタンをおしてもActionで指定したURLやパスに飛んでいないような感じです。

どこに飛んでいますか?

テキストフィールドの input 要素の name 属性にタイプミスがありますね。これを直したらどうなります?

Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/

ご確認ありがとうございます

redboxhosting's picture

早速ご確認ありがとうございます。

ボタンを押しても何処にもとばず、表示されているWEBページのままの状況です。

ご指摘頂いたNAME属性ですがダブルクオートが一つぬけておりましたが、こちらはコピペミスです。
申し訳ありません。

再度見直したところダブルクオートで囲まれていたため記述自体は問題がないように見られます。
※こちらのHTMLは静的HTMLで既に動いているもののソースをまるコピーしております。

そのため、Drupalでボタンを配置する際は単純なコピペでは動かない何かがあるのだとおもったのですが、普通にうごくということですのでどうもおかしいです。

念のため、ApacheのアクセスログやエラーログをみてみたのですがSUBMITボタンをおしてもどこにも記載がみあたらず。。。

shigehiro's picture

ボタンを押しても何処にもとばず、表示されているWEBページのままの状況です。

これは同じページがリロードされるのでしょうか?それともリロードもされないのでしょうか。

ブラウザの設定で javascript をオフにしたらどうなりますか?

Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/

redboxhosting's picture

再度Javascriptを無効にしてChromeで確認してみましたが、リロードもされない状況です。
F12キーをおしてリクエストがでているか確認してみましたが何もリクエストされていませんでした。

具体的にはHTMLだけのURLとPHPコードだけ書いたURLがあり、
以下のような感じで飛びます

1:HTMLだけのURL
ドメイン名/test

2:PHPだけのURL
ドメイン名/test.php

1のフォームに入力してSUBMITボタンをおすと、2のページに移動するはずなのですが、
1のページのままボタンがまったく反応しない状況です。

DrupalのURLはクリーンURLを有効にしているのですが、こちらは特に関係ないでしょうか?

手元の環境で試してみたときのコード例

bkenro's picture

横から失礼します。
手元の環境で試してみました。
shigehiro さんがおっしゃるとおり、下記コードで動作することを確認しました。

送信フォームのノードの body:

<form method="post" action="/test.php">
<input type="text" value="" name="hoge" size="50">
<input type="submit" value="submit" name="submit">
</form>

送信先(URLエイリアスに test.php を指定)ノードの body:

<?php
print '送信文字列: ' . check_plain($_POST['hoge']);
?>

原因調査の参考になれば。。

原因が分りました

redboxhosting's picture

皆様 色々とありがとうございます。
再度こちらで色々と確認したところ、bkenroさんの記載頂いたフォームをコピーしたところ普通に動きました!ということで明らかにDrupalの問題では無く記載してるHTMLのなにかがわるさをしているのではないかと思い色々削りながら調査したところ、TABLE内にフォームを設置しており、こちらが問題となっていたようです。

具体的には以下のように記載していました。

続き

redboxhosting's picture

すみません、何故かHTMLコードがスパム扱いでこちらに記載できないのですが、
Table要素とtd trを削除したところボタンが正常に動作するようになりました。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: