问题标签 [zf3]

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 回答
521 浏览

php - Zend Framework,PhpRenderer 无法渲染模板将控制器添加到模板名称中

我从 ZF2 迁移到 ZF3。现在我有一个问题。我的视图脚本在正确的位置,配置似乎没问题,但我收到以下错误:

Zend\View\Renderer\PhpRenderer::render: 无法渲染模板“party/controllers/write-party/add”;解析器无法解析到文件

这是一个相当常见的要解决的错误,但问题是由于某种原因,我controllers在模板路径中获取了文件夹。模板路径应该是parties/write-party/add.

模块.config.php

如何获得我的视图脚本的正确路径是parties/write-party/add

0 投票
1 回答
334 浏览

php - 未调用 PHPUnit 中的 Mock 对象

我的 PHPUnit 测试中有这段代码,它试图模拟一个表实体。但是当我尝试运行它时,我得到了这个错误。

方法名称的预期失败等于调用 1 次。方法预期被调用 1 次,实际上被调用 0 次。

我正在测试的方法:

我正在使用 ZF3。

我错过了一些东西,但我不知道是什么。

0 投票
1 回答
233 浏览

zend-framework - Zend 框架:如何将创建选项传递给服务

注册服务时module.config.php喜欢

在 ZF2(工厂实现时MutableCreationOptionsInterface)和 ZF3(通过$container->get(\Path\To\Your\Service\AService::class, $options).

谁能告诉我如何将创建选项传递给服务?

0 投票
1 回答
745 浏览

php - 如何将依赖项注入 Zend Framework 3 中的验证器?

我创建了一个自定义验证器,称为 CredentialsValidator,如果传递的凭据有效,则返回 true。凭据的实际验证由依赖项 AccountService 负责,该依赖项可通过 getAccountService() 方法在 Validator 中使用。CredentialsValidator::isValid($value, $context = null) 的有趣部分是:

属性 $email 和 $password 填充如下:

当我在单元测试中实例化 CredentialsValidator 并手动分配依赖项 AccountService 时,它​​ 100% 正确工作。

在实际的 Web 应用程序中,AccountService 是通过 ServiceManager 实例化的,使用 module.config.php 中的标准配置:

然而,我的目标是创建一个典型的“登录”表单,它使用 CredentialsValidator 来验证用户凭据。

为此,我创建了一个表单,扩展 Zend\Form\Form:

以及关联的模型,定义 getInputFilter() 方法:

这就是问题开始的地方。当我添加:

对于“密码”字段的“验证器”键,我无法注入存储在 ServiceManager 中的所需依赖项,因此,CredentialsValidator 无法工作,因为它无权访问 AccountService 实例。

对于这个问题,我提出了 2 个解决方案,其中一个我立即丢弃,因为它使用单例,另一个在工作时需要手动传递依赖项。

解决方案 #1:使用在 Module.php 中创建的单例

在 onBootstrap(MvcEvent $event) 方法中,可以创建一个单例:

然后可以在 CredentialsValidator 中访问它,并调用 Controller。

我放弃了这个解决方案,因为它使用了现在已弃用的 Singleton 模式。

解决方案 #2:手动传递 AccountService 实例

在 Controller 中,可以将 AccountService 实例传递给 Model 的构造函数:

然后在 Model::getInputFilter() 中,将实例传递给 'password' 字段的 'validators' 键,如下所示:

然后 CredentialsValidator 只需要通过其构造函数接受依赖项:

该解决方案确实有效,并且确实尊重类之间的接口,但是,手动传递 AccountService 实例是相当多的额外工作,实际上,ServiceManager 和注入的全部意义在于避免这种情况。解决方案#2 感觉就像 Zend Framework 3 应用程序中的异物。

我的问题:如何在不从控制器手动传递的情况下访问 CredentialsValidator 中的 AccountService 实例?

预先感谢您。

0 投票
1 回答
1390 浏览

php - 在教义“映射”命名空间中没有定义命令(教义模块映射:导入)

我正在尝试导入数据库以使用 Doctrine 启动 ZF3 PHP 项目。

我已阅读本教程,了解如何从数据库创建实体并发出以下命令:

并得到这个错误:

列出可用的命令。只有orm:和列出,根本没有migration:命令。dbal:mapping:

我在这里错过了一些安装阶段吗?

0 投票
1 回答
990 浏览

php - ZF3 重定向到另一个模块中的另一个控制器动作

我将 ZF3 与 Applcation 和 User 模块一起使用。应用程序模块是默认加载的模块,它包含我的索引页面作为欢迎页面,没有登录信息。用户模块有登录页面和所有用户认证的东西。

我需要在我的应用程序模块索引操作页面中放置一个按钮,以重定向到用户模块索引页面的登录页面。

我正在尝试使用这篇文章的答案,但它似乎不起作用。

这导致以下错误:

Zend\ServiceManager\Exception\ServiceNotFoundException

文件:

信息:

我应该如何使用 ZF3 重定向到另一个模块的操作?

0 投票
1 回答
4662 浏览

php - 实体公共字段的学说继承

我正在为我的 Web 项目使用 Zend Framework 3 和 Doctrine ORM。

我的应用程序中有几个模块(User, Stock, Sales),每个模块上有一些实体模型:

  • User模块实体:UserAccount等。
  • Stock模块实体:SKUStockLevel等。
  • Sales模块实体:InvoicePaymentMethod等。

默认情况下,所有实体都有公共字段,例如:

  • creationDateTime: 创建日期/时间
  • creationUser:创建实体的用户
  • lastChangeDateTime:上次实体更改的日期/时间
  • lastChangeUser:上次更改实体的用户

我不想放置这些字段或每个实体,而是创建一个项目基类来扩展我的所有实体。我需要有适用于所有实体的通用方法,即:

正如我从文档中看到的那样,它看到我需要使用单表继承,但我不知道具体如何。问题:

a)通过使用单表继承,Doctrine 将在数据库中为这些字段创建一个基表,还是将每个实体表的基字段和实体字段连接起来,或者换句话说,我将只有实体表还是这个继承将创建基础字段的数据库表也可以吗?

b)我应该把我的基础实体放在哪里,以便它可以被不同模块上的所有实体继承?

我会很感激有人可以提供一些示例/链接来说明如何做到这一点。

0 投票
1 回答
105 浏览

php - 从模块服务和控制器访问本地参数

我正在开发一个基于 Zend Framework 3 的站点,并且在某些模块中我需要发送电子邮件。

我正在使用 PERL Mail 来执行此操作。它将在生产中将所有电子邮件发送请求转发到 Amazon SES 服务,而对于开发,我使用免费的 gmail 帐户。

local.php在我的应用程序中,我想使用该文件以本地方式存储邮件配置project/config/autoload directory。通过这种方式,我可以为开发和生产提供不同的配置。因此,我在我的文件中创建了以下条目local.php

一切都很好,除了我不知道如何从我的模块服务和控制器中获取这些参数。

这是我需要访问此参数的服务示例,位于module/User/src/service/UserManagerService

该服务有一个工厂:

我对这些 ZF3 工厂、服务和控制器还很陌生,所以我在这里有点迷失。

如何在此服务中获取存储在 local.php 文件中的参数?对于控制器,这种方法是否相同?

0 投票
3 回答
2852 浏览

php - ZF2 使用 PHP5 与 PHP7

我的自定义类位于:

我得到了一个像这样的数据库适配器ServiceLocator(就像在这个Learning Zend Framework 2教程中一样):

在 PHP 5 中它工作得很好,但在 PHP 7 中却不行。似乎该类不再ServiceLocatorAware在 PHP 7 中。并给出了这个错误:

任何人都可以告诉我为什么 PHP 5 和 PHP 7 之间存在这种差异以及如何解决它?

0 投票
1 回答
7318 浏览

php - 使用 Zend Framework 3 构建 RESTful 服务的最佳方式

我们正在启动一个新项目,该项目将利用 RESTful 服务与 Web 客户端 (AngularJS) 和移动平台(Android 和 iOS)进行通信。

这个想法是将业务逻辑隐藏在 RESTful 服务中,并为 Web 客户端和移动平台使用相同的代码。

我们的服务器是使用 Zend Framework 3 用 PHP 构建的(我是该框架的新手)。该应用程序将有数十个实体和数百个服务。

我在网上注意到 ZF2 似乎有一个 REST 模块,但我找不到 ZF3 的模块(至少在文档中没有)。

我有一些问题:

  • 使用 ZF3 提供 RESTful 服务的最佳途径是什么?
  • 我要安装 ZF 模块吗?ZF3 有什么可以使用的东西吗?
  • 我应该在代码中为我的服务创建一个模块吗?其他模块是否应将此 REST 模块用于业务逻辑?