Posted by redboxhosting on September 23, 2014 at 5:01am
こんにちわ 初歩的な質問で申し訳ありませんが表題の通り、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
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さん
ご連絡ありがとうございます。
アドバイス頂いた通り、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
いえ、特に Drupal の API を使わなくても(ベタに HTML でフォームを記述しても)、それはそれで普通に動くはずですよ。
どこに飛んでいますか?
テキストフィールドの input 要素の name 属性にタイプミスがありますね。これを直したらどうなります?
Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/
ご確認ありがとうございます
早速ご確認ありがとうございます。
ボタンを押しても何処にもとばず、表示されているWEBページのままの状況です。
ご指摘頂いたNAME属性ですがダブルクオートが一つぬけておりましたが、こちらはコピペミスです。
申し訳ありません。
再度見直したところダブルクオートで囲まれていたため記述自体は問題がないように見られます。
※こちらのHTMLは静的HTMLで既に動いているもののソースをまるコピーしております。
そのため、Drupalでボタンを配置する際は単純なコピペでは動かない何かがあるのだとおもったのですが、普通にうごくということですのでどうもおかしいです。
念のため、ApacheのアクセスログやエラーログをみてみたのですがSUBMITボタンをおしてもどこにも記載がみあたらず。。。
ボタンを押しても何処にもとばず、表示されているWEBページ
これは同じページがリロードされるのでしょうか?それともリロードもされないのでしょうか。
ブラウザの設定で javascript をオフにしたらどうなりますか?
Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/
再度Javascriptを無効にしてChromeで確認して
再度Javascriptを無効にしてChromeで確認してみましたが、リロードもされない状況です。
F12キーをおしてリクエストがでているか確認してみましたが何もリクエストされていませんでした。
具体的にはHTMLだけのURLとPHPコードだけ書いたURLがあり、
以下のような感じで飛びます
1:HTMLだけのURL
ドメイン名/test
2:PHPだけのURL
ドメイン名/test.php
1のフォームに入力してSUBMITボタンをおすと、2のページに移動するはずなのですが、
1のページのままボタンがまったく反応しない状況です。
DrupalのURLはクリーンURLを有効にしているのですが、こちらは特に関係ないでしょうか?
手元の環境で試してみたときのコード例
横から失礼します。
手元の環境で試してみました。
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:
<?phpprint '送信文字列: ' . check_plain($_POST['hoge']);
?>
原因調査の参考になれば。。
原因が分りました
皆様 色々とありがとうございます。
再度こちらで色々と確認したところ、bkenroさんの記載頂いたフォームをコピーしたところ普通に動きました!ということで明らかにDrupalの問題では無く記載してるHTMLのなにかがわるさをしているのではないかと思い色々削りながら調査したところ、TABLE内にフォームを設置しており、こちらが問題となっていたようです。
具体的には以下のように記載していました。
続き
すみません、何故かHTMLコードがスパム扱いでこちらに記載できないのですが、
Table要素とtd trを削除したところボタンが正常に動作するようになりました。