问题标签 [mezzio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
953 浏览

php - 如何在 Zend Expressive 中将 PHP 错误记录到 PHP 的错误文件中?

使用 Zend Expressive 2.0.5,我想将 PHP 错误记录到 PHP 的错误日志文件中,我浏览了https://docs.zendframework.com/zend-expressive/features/error-handling/#handling-exceptions-and -错误

我还看到了这篇文章:Zend expressive - php error reporting。这为我清除了很多东西,但仍然没有解决所提出的问题。

我所做的事情:定义了我自己的ErrorHandlerFactory,我将两个听众附加到Zend-stratigility's ErrorHandler

  1. First Listener 使用 Zend Log 登录到我的应用程序的日志文件。(只是认为在我的 application.log 中也有错误会很好。)

  2. 在第二个监听器中,我想登录到 PHP 的错误日志文件,所以我使用了 php.ini 的error_log()方法。

问题:

  1. error_log() 不会以 php 的错误处理程序打印日志的方式打印日志。我的意思是说:

    当 php 的错误处理程序打印错误时,它看起来像这样:

    [08-Feb-2018 08:22:51 US/Central] PHP 警告:array_push() 需要至少 2 个参数,1 个在 C:\webserver\webroot\myapi\src\App\src\Action\PageAction.php 中给出在第 38 行

    当我使用它打印日志时,error_log()它看起来像这样:

    [08-Feb-2018 09:03:49 US/Central] array_push() 至少需要 2 个参数,1 个在 C:\webserver\webroot\myapi\src\App\src\Action\PageAction.php 第 38 行给出

    我在这里缺少的是 PHP 的错误类型:PHP 警告,这是错误代码吗?我得到的错误代码是一个整数,我该如何解析该代码?我是否应该将错误代码与出现在日志中的 PHP 错误常量进行映射,例如:WARNING、NOTICE 等,我什至可以这样做,但问题是:当 php 错误时,我得到相同的错误代码0处理程序打印了一个警告和一个致命错误日志。

  2. 像这样在 PHP 的错误日志文件中记录错误是否正确?我应该做 PHP 错误处理程序的工作吗?错误处理程序可能会做很多事情,例如:记录少数错误的错误消息,但另一个也记录堆栈跟踪。如果这不正确,那么我还能如何将错误发送到 PHP 的 error_handler?

    据我了解:

    我自己的错误处理程序阻止用户查找异常和堆栈跟踪,而是返回一般消息。这也意味着错误处理程序会处理错误并且不会将其抛到更远的地方,即不会将其抛给 PHP 的错误处理程序。

0 投票
0 回答
88 浏览

php - 如何使用 zend-inputfilter 验证上传的图像

我有一个接受文本字段和图像的表单,我希望能够验证或过滤上传的图像。

我尝试在 GitHub 上遵循本教程(https://github.com/lowtower/zend-expressive2-tutorial

我正在使用zend expressive 2。我有这种方法:

但是出了点问题,当我上传正确的图像时,我没有正确验证它。

0 投票
1 回答
274 浏览

php - Zend 输入过滤器“非此即彼”的场景是不可能的?

我在“zendframework/zend-inputfilter”v2.8.1 上。对我来说非常令人惊讶 - 我无法找到下一个场景的配置或设置选项:

我们有 2 个字段,需要填充一个或另一个。

例如:我们有 2 个字段:“ year ”和“ age ”。我想创建一个需要设置“年份”或“年龄”的验证配置。

所以我的有效载荷应该是这样的

或者

或者

这应该是无效的:

不幸的是,像这样的其他问题(Zend Framework 的 2 InputFilter 有条件地要求)似乎已经过时或不准确。例如,如果我尝试将字段“year”设为可选,对于有效载荷

由于此代码,它被跳过了\Zend\InputFilter\BaseInputFilter::validateInputs

如果我要求它,我会达到条件\Zend\InputFilter\Input::isValid

我对重写 BaseInputFilter 或 Input 类犹豫不决,但从我现在看到的情况来看,这似乎是我唯一的选择。但是,也许我错过了一些东西。我将不胜感激任何建议,谢谢!

0 投票
1 回答
660 浏览

php - 如何使用 PHPUnit 测试一个 zend 表达性休息 api 控制器?

我试图通过测试使用zend expressive构建的rest api控制器来学习PHPUnit,但在网上找不到任何关于如何执行相同操作的资源。Zend 框架的官方文档中的代码不适用于 zend expressive。所以我尝试遵循PHPUnit 文档

这是我现在所做的: -

但是当我运行上面的代码时,它会抛出这个错误:

我真的不知道我使用 PHPUnit 测试 rest api 控制器的方法是否正确,因为我是 php 和 phpunit 的新手。我将不胜感激任何帮助指出我正确的方向。

0 投票
0 回答
41 浏览

select - Zend Form中setData时选择疯狂

我对 zend-form 或 Doctrine ORM 有疑问,我不确定,问题是我使用 zend-form 并且没问题,但是当我需要更新时出现问题,当我得到旧值时,最后放入 setData 选择疯狂的选择了很多选项。我将把一部分代码放在图片上以显示问题。

另一部分是

这张图片显示了问题

前端

表格

0 投票
0 回答
66 浏览

php - 在 MVC Web 应用程序框架的上下文中,我可以在哪里放置多个影响输出的类似 if/then/else 的指令?

我正在使用 PHP 框架(从 Zend Framework 转换到 Zend Expressive),我有如下内容:

我有一个具有各种模型和定制的产品,根据这些,要显示不同的东西。以下仅为示例:

  • 对于 X、Y、Z 型,将显示变量 V54,并附有具体说明
  • 对于型号 A、B、C,将显示变量 V54,但描述不同

--

  • 对于 X、Y、Z 型,V54 值显示为小数点后 2 位
  • 对于型号 A、B、C,值 V54 将显示到小数点后 3 位

--

  • 对于 X、Y、Z 型,变量 V56 仅针对 2 转子产品显示,值减少 0.1
  • 对于型号 A、B、C,变量 V56 将显示为 2 转子产品,如下所示

--

  • 对于 X、Y、Z 型,变量 V58 未显示
  • 对于型号 A、B、C,显示变量 V58

等等

这些规则是否进入视图,我可以在其中使用 if/then/else 语句,或者我是否尝试将它们压缩到模型/其他层?

我该如何处理这样的事情?

0 投票
2 回答
149 浏览

php - 在 Zend Expressive 3 中使用 AbstractPluginManager

我想将一组实现公共接口的对象注入到我的一个服务中。我使用 zend servicemanager 作为 DI 容器。我现在已经阅读了很多文档,在我看来 AbstractPluginManager 是要走的路。我无法让它工作。有没有使用 AbstractPluginManager + Zend Expressive 3 的示例,我可以看看?

我的最终目标是将所有实现公共接口的注册类动态注入到我的服务中。

例子:

我的服务

提前致谢

0 投票
1 回答
507 浏览

php - 如何在 Zend Expressive 中抛出 404 错误?

我有个问题。当我没有得到 $item 时,我需要抛出 404 错误(参见代码)。

我使用 Zend Expressive 3。

感谢您的任何想法

0 投票
0 回答
194 浏览

php - Zend 表达式 - 在处理程序之间传递参数

我正在使用 Zend Express 3。我有两个句柄,一个用于渲染登录页面:

其次是检查登录凭据:

如果用户输入错误的密码,我会将他重定向回登录页面。我想在这两个处理程序之间添加额外的参数,例如使用的用户名或错误消息。最好的方法是什么?我可以生成带有属性的请求对象并将其发送给用户(如何在 Zend Express 3 中执行)?或者使用标题或会话?- 但我认为这不是个好主意。

0 投票
1 回答
129 浏览

router - Zend 路由问题

我正在将一个(相当草率的)zend 表达性网站转换为本地餐厅的 zend 框架 3 网站。当我在富有表现力的网站上设置路由时,我会根据如下所示的查询参数加载位置。

website.com/location?location=xxx

在我的新网站上,路由看起来像这样

website.com/locations/view/xxx

我需要设置一个将旧网址重定向到新网址的路线。到目前为止,我已经设置了一个查找 /location?location=[/:location] 的路由,希望它能识别这个“Segment”路由并加载适当的 LocationsController。现在它给了我一个找不到路线的错误。

我的代码如下所示。

模块.config.php

位置控制器.php

任何帮助将不胜感激,如果需要,我可以提供更多信息。谢谢!