【问题标题】:Slim Framework - Using a GET routeSlim 框架 - 使用 GET 路由
【发布时间】:2014-08-27 04:38:04
【问题描述】:

我对 Slim 框架完全陌生。我正在开发一个 Web 服务,它应该在 Android 应用程序和 Web 应用程序之间提供一个接口。我使用 Slim 文档进行了第一步,现在我想创建一个简单的 GET 路由,以从应用程序接收信息。这是我目前所拥有的:

require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();

$name_outside = '';

$app = new \Slim\Slim();
$app->get('/session/program_name/:name', function ($name) use($app) {
    $name_outside = $name;
    echo $name;
});

$app->run(); 

echo $name_outside;

我需要在函数外部访问变量 :name,但我得到的什么也没有。我在这里做错了什么?

顺便说一句:我知道 GET 路由通常用于列出现有资源,但对于我的简单案例,我决定以这种方式使用它。

【问题讨论】:

  • 我解决了你的问题吗?如果是这样,请将其标记为答案或告诉我们一些事情,不要让问题悬而未决

标签: rest slim


【解决方案1】:

修复你的代码以保存名称作为 args 参数,然后你可以进入你的函数

require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();

$name_outside = '';

$app = new \Slim\Slim();
$app->get('/session/program_name/{name}', function ($args) use($app) {
    $name_outside = $args['name'];
    echo $args['name'];
});
$app->run();

【讨论】:

    【解决方案2】:

    要访问您传递的函数上下文中的$name_outside

    $app->get('/session/program_name/:name', function ($name) use($app, &$name_outside) { $name_outside = $name; echo $name; });

    但也许您以错误的方式使用 Slim。为什么必须访问路径之外的变量?

    run() 调用后没有执行任何代码。这就是苗条的工作方式,试着在你回显变量的地方放一个骰子,它是不可到达的。

    您不应该需要以这种方式访问​​路径外部的上下文。要转换请求或响应,您可以使用带有钩子的中间件。

    【讨论】:

    • 我想错了。现在我在路由中调用数据库,它可以工作。实际上我想计算传入的数据,然后,如果预期的数据是完整的,我已经将它插入到数据库中。但现在我使用存储过程计算数据库中的所有内容。感谢您的帮助...
    • 您必须将所有内容封装在路由函数中。它接收请求并处理输出。不要忘记将答案标记为已解决
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    相关资源
    最近更新 更多