【问题标题】:Rendering custom PHP code [UserFrosting/Slim]渲染自定义 PHP 代码 [UserFrosting/Slim]
【发布时间】:2016-08-12 12:06:37
【问题描述】:

[UserFrosting 0.3.1]

我想执行一个自定义 PHP 文件,绕过其他 UserFrosting 架构。

Slim 的$app->render("myfile.php") 似乎不起作用。它需要主题目录中的 twig 文件,它不会执行 PHP 脚本。

如何绕过这个限制?

关于我想要达到的目标的详细信息:

我在一个自定义 PHP 文件中创建了一个文件上传脚本。它使用从用户表单(来自 UserFrosting 仪表板)发布的$_FILESarray 来处理用户文件上传并进行一些处理工作。

我还没有设法通过自定义 UserFrosting 的控制器类访问 $_FILES 数据。这就是为什么我在根目录中使用一个普通的旧外部 PHP 文件,它可以工作。

现在我希望通过 Slim 路由到该 PHP 文件,以强制执行基本用户身份验证/权限

【问题讨论】:

    标签: php slim userfrosting


    【解决方案1】:

    一般来说,我建议不要使用这种方法来设计一个易于长期管理的应用程序。 $_FILES 是一个超全局变量,因此应该可以从任何地方访问 - 甚至可以从类方法中访问。所以,我不知道为什么你会在你的控制器中访问它时遇到问题。

    但是,如果您确实需要调用包含过程代码的独立 PHP 文件,您始终可以在路由闭包中使用普通的旧 include

    $app->get('/my-route/?', function () use ($app) {    
    
        // Access-controlled page
        if (!$app->user->checkAccess('uri_my_route')) {
            $app->notFound();
        }
    
        include "path/to/myfile.php";
    });
    

    【讨论】:

    • 谢谢。这对我有用。即使我选择了您的库采用的 MVC 方法,有什么方法可以将我的代码与您的库分开吗?抱歉,如果这听起来像一个愚蠢的问题。我不想弄乱你的库,宁愿把我的代码放在另一个文件夹中,以便于阅读和方便。如果我遗漏了什么或做错了事,请随时指出。
    • @input 查看我对这个问题的回答:stackoverflow.com/a/38724285/2970321
    • 当我尝试路由到 phpMyAdmin 之类的第 3 方系统(我包含主 index.php 文件)时,上述方法无法开箱即用。我收到“Uncaught ErrorException: require_once(./libraries/vendor_config.php): failed to open stream: No such file or directory..”和类似的错误。 phpMyAdmin 在 UserFrosting 路由系统之外工作正常。将进行更多调查...谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2013-07-27
    • 1970-01-01
    • 2017-06-09
    • 2012-08-25
    • 1970-01-01
    • 2017-11-24
    • 2013-09-25
    相关资源
    最近更新 更多