我在 OpenEMR 中的第一个 Symfony 2.4 组件控制器
Posted
技术标签:
【中文标题】我在 OpenEMR 中的第一个 Symfony 2.4 组件控制器【英文标题】:My first Symfony 2.4 component controller inside OpenEMR 【发布时间】:2020-02-09 00:15:23 【问题描述】:我正在现有的应用程序 OpenEMR 中构建。我正在努力为构建报告奠定基础。我按照本教程中的说明进行操作。
https://symfony.com/doc/2.8/page_creation.html#creating-a-page-route-and-controller
在编写此帮助请求时。我找到了这个答案。
My first controller in symfony
我将建议的 routing.yml 添加到程序的配置中,错误没有改变。它仍在产生此错误。
[11-Oct-2019 08:23:43 America/New_York] php Fatal error: Uncaught Error:
Class 'OpenEMR\Finance\Reports\financialSummaryByInsurance' not found in
C:\oerm_dev\www\dev\mindfulemr4\interface\reports\insurance.php:5
Stack trace:#0 main thrown in C:\oerm_dev\www\dev\mindfulemr4\interface\reports\insurance.php on line 5
所以,我采取的步骤是这些。我编辑了 composer.json 以添加命名空间。在下面添加中间行后,我使用 dumpautoloader -o 重新加载了作曲家。
"OpenEMR\\Billing\\" : "library/billing/src",
"OpenEMR\\Finance\\Reports\\" : "library/financialReports/src",
"OpenEMR\\Pdf\\" : "library/pdf/src",
我使用
安装了路由组件 composer require symfony/routing 2.4
我使用 PHPStorm 来帮助命名和创建类。
namespace OpenEMR\Finance\Reports; //This will function as my controller event though not named controller
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing; //Making use of Symfony routing
class financialSummaryByInsurance //Class controller name without the word controller
public function insurancepaid()
/**
* @Route("/library/financialReports/src/financialSummaryByInsurance/insurancepaid", name = "insurancepaid")
*/
return new Response("insurance data here my first controller from scratch" );
然后,我想建立一个页面来调用控制器来显示来自控制器的信息。该文件名为 insurance.php,内容为。
use OpenEMR\Finance\Reports\financialSummaryByInsurance;
$show = new financialSummaryByInsurance;
echo $show->insurancepaid();
PHPStorm 能够在 insurance.php 文件中找到并建议每个组件。这就是为什么我对错误日志中的错误消息感到困惑。在把这个框架从一楼弄下来的过程中,我一定遗漏了一些东西。
【问题讨论】:
你的“require vendor/autoload.php”行在哪里? 控制器类的名称需要在它的末尾有“控制器”这个词。 你能确认类financialSummaryByInsurance
位于library/financialReports/src/financialSummaryByInsurance.php
吗?如果不是,这可能是您的Class ... not found
错误的原因。如果是,请确保 composer 中的自动加载已更新,例如使用composer dump-autoload
,正如 Theva 的回答中所建议的那样
@dbrumann 很确定他们正在尝试独立做一些事情,并且他们实际上根本不需要 autoload.php 文件。太糟糕了,他们变黑了。
是的,library/financialReports/src/financialSummaryByInsurance.php 在那个文件夹中。我检查了两者的拼写两次。我发现一个拼写错误。
【参考方案1】:
要显示从控制器 financialSummaryByInsurance
返回的页面,您必须使用与您定义的 insurancepaid
路由匹配的 HTTP 请求调用它。
控制器只是一个 PHP 类,如果您实例化它,它不会向您显示 html 页面。
如果您调用GET http://yourdomain/library/financialReports/src/financialSummaryByInsurance/insurancepaid
(
【讨论】:
【参考方案2】:似乎找不到类错误。
尝试执行
composer dump-autoload
重新生成自动加载文件
我发现你的路由类不对,应该是这个
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
参考:https://symfony.com/doc/2.8/controller.html
【讨论】:
这并没有解决问题。我确实把它放进去只是为了看看会发生什么。没有快乐。 你可以尝试在你的composer.json中修改这一行为“psr-4”:“”:“src/”,然后运行composer dump-autoload Theva——我想通了。这是骆驼案。我必须将文件名的第一个字母和类的第一个字母大写。一些简单的事情。以上是关于我在 OpenEMR 中的第一个 Symfony 2.4 组件控制器的主要内容,如果未能解决你的问题,请参考以下文章
在 Symfony 中的第一个错误上停止对象属性验证有多漂亮?