php - 如何将变量传递给中间件函数? [SLIM框架]

标签 php frameworks routes slim middleware

我正在尝试将数据库变量传递给中间件函数。但是我收到以下错误:

Fatal error: Call to undefined method Slim\Route::prepare() in /Applications/MAMP/htdocs/website/models/feedback.php on line 11 with the code: "$results = $db->prepare("INSERT INTO ... "

代码如下:

function newsletter(){

  $app = \Slim\Slim::getInstance();
  $route = $app->request->post('route');
  $email = $app->request->post('email_subscribe');
  $subscribe = $app->request->post("subscribe");
  $oFeedback = new Feedback();
  if(!empty($email)) {
    $cleanEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
    $type="newsletter";
    $oFeedback->saveFeedback($db,NULL,$cleanEmail,NULL,$type);
  }
}

我在路由中调用中间件函数,如下所示:

$app->post('/triparticle', 'newsletter', function() use($app, $db){
})->name("triparticle_post");

你能帮我吗?

最佳答案

您应该能够使用 anonymus 函数来做到这一点。

您的代码可能如下所示:

$newsletter = function ($db){
    return function () use ($db){

      $app = \Slim\Slim::getInstance();
      $route = $app->request->post('route');
      $email = $app->request->post('email_subscribe');
      $subscribe = $app->request->post("subscribe");
      $oFeedback = new Feedback();
      if(!empty($email)) {
        $cleanEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
        $type="newsletter";
        $oFeedback->saveFeedback($db,NULL,$cleanEmail,NULL,$type);
      }
    };
};

$app->post('/triparticle', $newsletter($db), function(){
})->name("triparticle_post");

这是描述的here .

关于php - 如何将变量传递给中间件函数? [SLIM框架],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34399510/

相关文章:

php - 数据库已连接,但未找到数据

java - 有没有类似spring的android应用框架?

unit-testing - 单元测试复杂交互的正确方法

rest - 如何从其他包中导入子路线

php - Yii 2 - radioList 模板

php - 学说 : Set CURRENT_TIMESTAMP as default value by the database (i. e.不是通过 PHP)

ruby-on-rails - 将 root 重定向到/admin

php - 从 Laravel 5.2 中的 404 路由中排除路径/目录

php - 如果表A中的记录不存在于表B中做某事,我将如何去做呢?

macos - OSX 如何使用位于当前工作目录或子目录 C/C++ 中的 GCC/G++ 编译框架