首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phalcon和XenForo

Phalcon和XenForo
EN

Stack Overflow用户
提问于 2014-04-17 23:33:04
回答 1查看 344关注 0票数 0

我正在尝试将XenForo添加到我的Phalcon应用程序中。该项目的结构如下:

代码语言:javascript
复制
www/
    phalcon/
        app/
            controllers/
                AccountController.php
            views/
                account
                    login.phtml
        public/
            forums/    <-- XenForo installation
            .htaccess
            index.php
        .htaccess

www/phalcon/.htaccess上的文件如下所示:

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule  ^$ public/    [L]
    RewriteRule  (.*) public/$1 [L]
</IfModule>

www/phalcon/public/.htaccess的文件如下所示:

代码语言:javascript
复制
<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

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
PhalconException: ForumsController handler class cannot be loaded

因此,我将www/phalcon/public/.htaccess上的文件修改为:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
The requested URL /phalcon/public/forums/login was not found on this server.

我原以为XenForo会在这一点上接管路由,但显然不是。我需要做些什么才能让Phalcon和XenForo表现得很好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-18 16:45:49

但是XenForo不是一个独立的应用程序吗?我明白你想要什么,但是深呼吸,如果你真的需要它,我会想一想。你让事情变得更复杂了。如果XenForo使用一些指向不存在文件的神奇URL怎么办?!

我不能指出所有可能的复杂情况,但肯定会有一些复杂的情况,您可以通过简单的put XenForo安装来避免这种情况,而不是Phalcon为自己的资产使用的文件夹。每个项目都有各自的约定,我只是对此有一种不好的感觉:)

下面是我的建议:您可以将XenForo保留在“phalcon”文件夹中,但将其移到“public”文件夹之外,并在主.htaccess中为该文件夹添加一些重写。

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteRule  ^$ public/    [L]

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

你以前做的同样的事情,但是在一个更“安全”的地方。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23145181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档