0

XenForo を Phalcon アプリケーションに追加しようとしています。プロジェクトは次のように構成されています。

www/
    phalcon/
        app/
            controllers/
                AccountController.php
            views/
                account
                    login.phtml
        public/
            forums/    <-- XenForo installation
            .htaccess
            index.php
        .htaccess

のファイルはwww/phalcon/.htaccess次のようになります。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule  ^$ public/    [L]
    RewriteRule  (.*) public/$1 [L]
</IfModule>

のファイルはwww/phalcon/public/.htaccess次のようになります。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>

www/phalcon/app/views/account/login次の場所にある XenForo ログイン スクリプトに投稿するフォームを含むビューを追加しましたhttp://localhost/phalcon/forums/login

<?php echo $this->tag->form('forums/login'); ?>

    <p>
        <label for="name-email">Name or email:</label>
        <?php echo $this->tag->textField('login'); ?>
    </p>

    <p>
        <label for="password">Password</label>
        <?php echo $this->tag->passwordField('password'); ?>
    </p>

    <p>
        <?php echo $this->tag->submitButton('Login'); ?>
    </p>

<?php echo $this->tag->endForm(); ?>

ForumsController がないため、フォームを投稿するとエラーが発生しました。

PhalconException: ForumsController handler class cannot be loaded

だから私はこれにファイルを変更しましwww/phalcon/public/.htaccessた:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^(forums)($|/) - [L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>

これにより、Phalcon は で始まるすべてのルートを無視しforumsます。ただし、フォームを投稿すると 404 が表示されるようになりました。

The requested URL /phalcon/public/forums/login was not found on this server.

この時点で XenForo がルーティングを引き継ぐのではないかと思っていましたが、そうではないようです。Phalcon と XenForo がうまく機能するにはどうすればよいですか?

4

1 に答える 1

1

しかし、XenForo はまったく別のアプリケーションではないのでしょうか? お気持ちはわかりますが、深呼吸して本当に必要かどうか考えてみてください。私見、あなたは自分自身のために物事を複雑にしています。XenForo が存在しないファイルを指す魔法の URL を使用するとどうなるでしょうか?!

考えられるすべての複雑さを指摘することはできませんが、確かにそれらのいくつかはあります.Phalconが独自のアセットに使用するフォルダー以外の場所にXenForoをインストールするだけで、これを回避できます. 各プロジェクトには慣習があります。私はこれについて悪いことをしています:)

ここに私の提案があります: XenForo を「phalcon」フォルダー内に置いたままにして、「public」フォルダーの外に移動し、メインのこのフォルダーにいくつかの書き換えを追加することができます.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteRule  ^$ public/    [L]

    RewriteCond %{REQUEST_URI} !^/forums(\/.*$|$)
    RewriteRule  (.*) public/$1 [L]
</IfModule>

基本的には以前と同じことですが、より「安全な」場所で行います。

于 2014-04-18T16:45:49.027 に答える