通常、フォームを処理するときは、「アクション」パラメーターで、次のように完全な PHP スクリプトを参照する必要があります。
<form method="post" action="foo.php"></form>
スクリプト全体を言及するのではなく、フォームに関数またはメソッドを使用するように指示する方法はありますか?
フォームが次のようになっていると想像してください。
<form name="form1" method="post" action="">
<p>
<label></label>
<input type="text" name="textfield" id="textfield" />
</p>
<p>
<label></label>
<input type="submit" name="button" id="button" value="Submit" />
</p>
</form>
次に、php の先頭に置くことができます。
if (isset($_POST['textfield'])) {
foo();
}
foo();
実行したい関数の名前に置き換えます。
これは、 を使用してページに投稿されたフォーム データがあったかどうかを単純にチェックしますname="textfield"
。
私が知っていることではありませんが、このようなことができると確信しています...
action="foo.php?fromForm=yes"
次に、あなたのphpコードで、これを持つことができます...
if($_GET['fromForm'] == "yes") {
//put your function here, or call it here
}
else {
//rest of code goes here
}
いいえ。指定しているのはスクリプトではなく、URLです。HTML/ブラウザはサーバー側の関数やメソッドを認識せず、URL のみを認識します。
属性を使用して、onsubmit
代わりに JavaScript メソッドを呼び出すことができます。
<form method="post" onsubmit="doSomething()"></form>
これを使用して、フォームを次のようなスクリプトに渡す前に検証することもできます。
<form method="post" action="foo.php" onsubmit="canSubmit()"></form>
注: クライアント側で JavaScript 関数を呼び出すのではなく、サーバー側で PHP コードのメソッドまたは関数にアクセスできるかどうかを尋ねていると思います。
クライアント側は、サーバー側のメソッドを任意に呼び出すことはできません。リソースへの URL またはパスは、サーバー上のリソースを識別するために使用されます。
同じスクリプトで別の機能を実行する場合は、if/else ブロッキングを使用し、クエリ パラメーターを使用して URL を区別できます。
HTML:
<form method="post" action="foo.php?method=saveData"></form>
PHP:
<? /* foo.php */
if($_REQUEST['method'] == "saveData") {
// do stuff
} else if($_REQUEST['method'] == "doSomethingElse") {
// do other stuff
}
?>
これは非常に基本的な例です。より複雑なニーズに対応するために、多くのフレームワークは、このレベルの分岐をすぐに使用できる高度な機能で実行できます。
PHP スクリプトが次のように記述されている場合:
<?php
switch ($_GET ['f']) {
case 'do_one':
// do something
break;
case 'do_two':
// or use a callback
do_two_callback ();
break;
default:
// ...
}
?>
...いつでもこれを行うことができます
<form method="post" action="foo.php?f=do_one"></form>