2

私はこれができることを知っています:

//Jquery
$.ajax({type: 'POST', data : {'action' : 'foo'}});

//PHP
if(isset($_POST['action']) && $_POST['action'] == 'foo')
{
    function foo()
    {
        //yeah
    }
}

しかし..私が友人と取り組んでいるプロジェクトでは、彼はカスタムアクションを使用して呼び出される特定の機能を持つことができるようにコントローラーを設定しました。たとえば、私のビューがthing.phpのコントローラーを使用しているとします。私のJavascriptから、次のようなURLにAJAXすることができます。

'url' : 'thing'

したがって、この場合、foo()は、ifやスイッチを必要とせずに呼び出されます(私が知る限り)

私にとって、これは素晴らしく理想的ですが、どのように設定されたかはわかりません。彼は休日に尋ねるために周りにいないので、私はあなたたちに尋ねています。

これがどのように達成されるか知っていますか?かなり典型的なMVCアーキテクチャを使用しています。申し訳ありませんが、私はPHPの初心者です。ありがとう!

4

1 に答える 1

7

あなたの友人は .htaccess を使用して URL を書き換えて追加しているようです.php

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

のように URL を呼び出すと、/thing実際に/thing.phpサーバー上のファイルが呼び出されて実行されます。または、あなたの場合、あなたのURLがthing最初の / なしの場合thing.php、現在のページが入っているのと同じフォルダーで呼び出されます.

あるいは、すべてをコントローラーに書き直してから、変数をコマンドとして追加しているのかもしれません。何かのようなもの

RewriteRule ^(.*)$ controller.php?action=$1

とにかく、あなた/彼の.htaccessファイルをチェックして手がかりを探してください

于 2012-12-28T09:44:08.603 に答える