将路由组织到单独的文件中,在 Slim 中无法正常工作

2023-12-01

这是我的索引.php file:

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
require '../src/config/db.php';

$app = new \Slim\App;
//User Routes
require '../src/routes/users.php'; // This not working
require '../src/routes/org.php'; // Only This working

$app->run();

.htaccess file

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

当只有一个需要文件时,它工作正常,但当添加两个或多个文件时,只有最后一个文件工作,其他文件工作正常页面未找到错误。我是 slim 和 PHP 的新手,所以我不知道出了什么问题。

用户.php

<?php
/**
 * User: y34h1a
 * Date: 2/10/17
 * Time: 3:47 AM
 */
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

$app = new \Slim\App;

//Get All Customers
$app->get('/api/users', function (Request $request, Response $response){
    $sql = "Select * from users";

    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();

        $stmt = $db->query($sql);
        $users['users'] = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($users);
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});


//GET SINGLE USER
$app->get('/api/user/{id}', function (Request $request, Response $response){
    $id = $request->getAttribute('id');
    $sql = "Select * from users WHERE id = $id";

    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();

        $stmt = $db->query($sql);
        $user['user'] = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($user);
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});


//ADD USER
$app->post('/api/user/add', function (Request $request, Response $response){
    $name = $request->getParam('name');
    $email = $request->getParam('email');
    $password = $request->getParam('password');
    $sql = "Insert into users(name,email, password) values (:name, :email, :password)";

    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();
        $stmt = $db->prepare($sql);

        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':email', $email);
        $stmt->bindParam(':password', $password);

        $stmt->execute();

        echo '{"notice": {"text": "Customer Added"}}';
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});

//UPDATE USER

$app->put('/api/user/update/{id}', function (Request $request, Response $response){
    $id = $request->getAttribute('id');
    $name = $request->getParam('name');
    $email = $request->getParam('email');
    $password = $request->getParam('password');

    $sql = "UPDATE users SET 
              name = :name, 
              email = :email, 
              password = :password 
            WHERE id = $id";

    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();
        $stmt = $db->prepare($sql);

        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':email', $email);
        $stmt->bindParam(':password', $password);

        $stmt->execute();

        echo '{"notice": {"text": "Customr UPDATED"}}';
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});


//DELETE USER
$app->get('/api/user/delete/{id}', function (Request $request, Response $response){
    $id = $request->getAttribute('id');
    $sql = "DELETE FROM users WHERE id = $id";

    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();
        $stmt = $db->prepare($sql);
        $stmt->execute();
        $db = null;
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});

org.php

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

$app = new \Slim\App;

//Get All Orgs
$app->get('/api/orgs', function (Request $request, Response $response){
    $sql = "Select * from org";

    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();

        $stmt = $db->query($sql);
        $users['orgs'] = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($users);
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});

//GET SINGLE ORG
$app->get('/api/org/{id}', function (Request $request, Response $response){
    $id = $request->getAttribute('id');
    $sql = "Select * from org WHERE id = $id";

    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();

        $stmt = $db->query($sql);
        $user['org'] = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($user);
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});



//ADD ORG
$app->post('/api/org/add', function (Request $request, Response $response){
    $user_id = $request->getParam('user_id');
    $name = $request->getParam('name');
    $address = $request->getParam('address');
    $sql = "Insert into org(user_id, name, address) values (:user_id, :name, :address)";
    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();
        $stmt = $db->prepare($sql);

        $stmt->bindParam(':user_id', $user_id);
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':address', $address);

        $stmt->execute();

        echo '{"notice": {"text": "Organization Added"}}';
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});


//UPDATE ORG
$app->put('/api/org/update/{id}', function (Request $request, Response $response){
    $id = $request->getAttribute('id');
    $name = $request->getParam('name');
    $address = $request->getParam('address');

    $sql = "UPDATE org SET 
              name = :name, 
              address = :address 
            WHERE id = $id";
    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();
        $stmt = $db->prepare($sql);

        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':address', $address);
        $stmt->execute();

        echo '{"notice": {"text": "Organization Deleted"}}';
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});

//DELETE ORG
$app->delete('/api/org/delete/{id}', function (Request $request, Response $response){
    $id = $request->getAttribute('id');
    $user_id = $request->getParam('user_id');
    $org_id = $request->getParam('org_id');
    $sql = "DELETE FROM org WHERE id = $id AND user_id = $user_id";
    try{
        //Get DB Object
        $db = new db();
        //Connect
        $db = $db->connect();
        $stmt = $db->prepare($sql);
        $stmt->execute();
        $db = null;
        echo '{"notice": {"text": "Sheet Deleted"}}';
    }catch(PDOException $e){
        echo '{"error":{"text":'.$e->getMessage().'}';
    }
});

好的,您的问题是您基本上创建了应用程序的三个实例:其中一个index.php, 一于users.php, 一于org.php.

应用程序实例的创建者是

$app = new \Slim\App;

该应用程序是由$app->run.

In index.php你有$app,它被覆盖$app in users.php,然后被覆盖$app in org.php.

这就是为什么require '../src/routes/users.php';似乎被忽略了 - 它正在声明$app,添加路线并在下一个文件中覆盖$app并添加路线。

要解决此问题,只需删除

$app = new \Slim\App;

来自四面八方,但index.php.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将路由组织到单独的文件中,在 Slim 中无法正常工作 的相关文章

  • 从多维数组中删除多个值

    我有一个来自 WordPress 的数组get posts 功能 posts array 15 0 gt object WP Post 285 24 ID gt int 253 post author gt string 1 1 post
  • PHP 指针与引用

    在 PHP 中 使用指针有什么区别 例如 function foo var var 3 a 0 foo a 以及参考 function foo var var 3 a 0 foo a 它们都修改了原始变量的值 但是它们内部的表示方式不同吗
  • Apache mod_rewrite:仅当不在本地主机中时才强制 www

    我的 htaccess 中有以下内容来强制 URL 中包含 www RewriteCond HTTP HOST www RewriteRule http www HTTP HOST 1 R 301 L 如果不在本地主机上 我该如何应用它 我
  • Smarty 3 如何与 Zend Framework 2 一起使用?

    我很久以前就使用过 PHP5 目前正在尝试刷新我的知识 并通过 Zend Framework 2 和 Smarty 3 的知识来增强它 以实现一个可能的项目 我目前正在尝试弄清楚如何使用 Smarty 3 作为 Zend Framework
  • PHP - 将文件系统路径转换为 ​​URL

    我经常发现项目中的文件需要从文件系统和用户浏览器访问 一个例子是上传照片 我需要访问文件系统上的文件 以便可以使用 GD 来更改图像或移动它们 但我的用户还需要能够从类似以下的 URL 访问文件example com uploads myp
  • 如何创建一个每次调用公共方法时都会调用的方法?

    如何创建一个每次调用公共方法时都会调用的方法 您也可以说这是一个后方法调用挂钩 我当前的代码
  • 用php将数字转换为字母[重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 中将数字 1 2 3 转换为字符串 一 二 三 https stackoverflow com questions 2112571 converting a number 1 2 3 to
  • 我想回显 __FILE__ 名称而不带路径。我只想页面名称,例如:index.php

    echo FILE 给我 C EasyPHP DevServer 13 1VC9 data localweb projects FOLDERNAME index php 我只想获取不带路径的文件名 我想单独获取index php 有任何想法
  • 编写 PHP SQL 更新语句的最佳方法

    我有这个 PHP SQL 语句 updateCategory UPDATE category SET name name description description parent parent active active WHERE i
  • 带数组的双美元变量

    我正在尝试使用双美元语法访问数组的第一项 但它无法按照我想要的方式工作
  • PHP 生成的 XML 显示无效的 Char 值 27 消息

    我使用 PHP 库生成 XML 如下所示 dom new DOMDocument 1 0 utf 8 执行上述操作会生成一个页面 该页面在输出顶部显示一条消息 此页面包含以下错误 第 16 行第 274505 列错误 PCDATA 无效 C
  • PHP 正则表达式查找特定的阿拉伯语关键字

    我需要找到一种可靠的方法来使用 PHP 搜索阿拉伯语单词 我要搜索的文本可能是英语或阿拉伯语 因此英语单词不能破坏系统 我一直在阅读 PHP 手册和其他一些材料 并认为我有一个正确的解决方案 但我将感谢一些正则表达式专家的一些意见 这项任务
  • 通过左连接实现精确分页

    我已经思考这个问题有一段时间了 我认为最好四处询问并听听其他人的想法 我正在构建一个在 Mysql 上存储位置的系统 每个位置都有一个类型 有些位置有多个地址 表格看起来像这样 location location id autoincrem
  • 子目录中的 CakePHP 控制器和模型

    你好 我想知道如何将我的组件和模型放在子目录中 假设我有一个 Web 应用程序 它有 3 个不同的区域 管理员 用户 开发人员 每个区域执行不同的操作并具有完全不同的界面 所以我希望管理员去http www site com admin h
  • Facebook API 注销我的应用程序,但不注销 Facebook

    如何使用 Facebook 的 api 进行注销 让我退出我的应用程序 网站 但保持登录 facebook com 的状态 这让我登录正常 window fbAsyncInit function FB init appId status t
  • Laravel Valet 不工作。 127.0.0.1 连接被拒绝

    试图让代客泊车设置正常工作 当访问 127 0 0 1 时 连接被拒绝 这是我在访问 dev 站点设置之一时收到的消息 我已经确保 apache 已停止 并且一直在谷歌上搜索所有地方 但无法找到解决方案 有没有人遇到过这个或对下一步尝试什么
  • 根据产品变体术语将收件人添加到 Woocommerce 电子邮件通知

    我创建了一个 Woocommerce 插件并要求它做两件事 根据购物车中的产品变体 向特定电子邮件地址发送通知消息 电子邮件必须仅包含相关产品 不得包含其他属性的产品 例如 产品 A 具有名为 Chef 的属性 其中 Chef one 和
  • TCPDF 为一个文档中的不同页面设置不同的页眉

    有没有办法使文档中第一页的页眉徽标和第二页的页眉徽标不同 我认为在添加页面之间更改标题数据可能会解决问题 但在我的测试中 添加第一页后设置标题似乎没有效果 other stuff pdf gt setHeaderFont array PDF
  • Zend 1.11 和 Doctrine 2 自动从现有数据库生成所需的一切

    我是 ORM 新手 我真的很想学习它 我按照本教程成功地使用 Zend 1 11 x 安装了 Doctrine 2 1 的所有类和配置 http www zendcasts com unit testing doctrine 2 entit
  • localhost/test.php 不返回任何内容

    我正在遵循教程构建一个网络应用程序 我创建了一个简单的test php网络空间中的文件 var www html 问题是当我输入localhost test php在浏览器地址窗口中 它返回一个空页面 我试过localhost php in

随机推荐