问题标签 [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.
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
?
php - 未调用 PHPUnit 中的 Mock 对象
我的 PHPUnit 测试中有这段代码,它试图模拟一个表实体。但是当我尝试运行它时,我得到了这个错误。
方法名称的预期失败等于调用 1 次。方法预期被调用 1 次,实际上被调用 0 次。
我正在测试的方法:
我正在使用 ZF3。
我错过了一些东西,但我不知道是什么。
zend-framework - Zend 框架:如何将创建选项传递给服务
注册服务时module.config.php
喜欢
在 ZF2(工厂实现时MutableCreationOptionsInterface
)和 ZF3(通过$container->get(\Path\To\Your\Service\AService::class, $options)
.
谁能告诉我如何将创建选项传递给服务?
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 实例?
预先感谢您。
php - 在教义“映射”命名空间中没有定义命令(教义模块映射:导入)
我正在尝试导入数据库以使用 Doctrine 启动 ZF3 PHP 项目。
我已阅读本教程,了解如何从数据库创建实体并发出以下命令:
并得到这个错误:
列出可用的命令。只有orm:
和列出,根本没有migration:
命令。dbal:
mapping:
我在这里错过了一些安装阶段吗?
php - ZF3 重定向到另一个模块中的另一个控制器动作
我将 ZF3 与 Applcation 和 User 模块一起使用。应用程序模块是默认加载的模块,它包含我的索引页面作为欢迎页面,没有登录信息。用户模块有登录页面和所有用户认证的东西。
我需要在我的应用程序模块索引操作页面中放置一个按钮,以重定向到用户模块索引页面的登录页面。
我正在尝试使用这篇文章的答案,但它似乎不起作用。
这导致以下错误:
Zend\ServiceManager\Exception\ServiceNotFoundException
文件:
信息:
我应该如何使用 ZF3 重定向到另一个模块的操作?
php - 实体公共字段的学说继承
我正在为我的 Web 项目使用 Zend Framework 3 和 Doctrine ORM。
我的应用程序中有几个模块(User
, Stock
, Sales
),每个模块上有一些实体模型:
User
模块实体:User
、Account
等。Stock
模块实体:SKU
、StockLevel
等。Sales
模块实体:Invoice
、PaymentMethod
等。
默认情况下,所有实体都有公共字段,例如:
creationDateTime
: 创建日期/时间creationUser
:创建实体的用户lastChangeDateTime
:上次实体更改的日期/时间lastChangeUser
:上次更改实体的用户
我不想放置这些字段或每个实体,而是创建一个项目基类来扩展我的所有实体。我需要有适用于所有实体的通用方法,即:
正如我从文档中看到的那样,它看到我需要使用单表继承,但我不知道具体如何。问题:
a)通过使用单表继承,Doctrine 将在数据库中为这些字段创建一个基表,还是将每个实体表的基字段和实体字段连接起来,或者换句话说,我将只有实体表还是这个继承将创建基础字段的数据库表也可以吗?
b)我应该把我的基础实体放在哪里,以便它可以被不同模块上的所有实体继承?
我会很感激有人可以提供一些示例/链接来说明如何做到这一点。
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 文件中的参数?对于控制器,这种方法是否相同?
php - ZF2 使用 PHP5 与 PHP7
我的自定义类位于:
我得到了一个像这样的数据库适配器ServiceLocator
(就像在这个Learning Zend Framework 2教程中一样):
在 PHP 5 中它工作得很好,但在 PHP 7 中却不行。似乎该类不再ServiceLocatorAware
在 PHP 7 中。并给出了这个错误:
任何人都可以告诉我为什么 PHP 5 和 PHP 7 之间存在这种差异以及如何解决它?
php - 使用 Zend Framework 3 构建 RESTful 服务的最佳方式
我们正在启动一个新项目,该项目将利用 RESTful 服务与 Web 客户端 (AngularJS) 和移动平台(Android 和 iOS)进行通信。
这个想法是将业务逻辑隐藏在 RESTful 服务中,并为 Web 客户端和移动平台使用相同的代码。
我们的服务器是使用 Zend Framework 3 用 PHP 构建的(我是该框架的新手)。该应用程序将有数十个实体和数百个服务。
我在网上注意到 ZF2 似乎有一个 REST 模块,但我找不到 ZF3 的模块(至少在文档中没有)。
我有一些问题:
- 使用 ZF3 提供 RESTful 服务的最佳途径是什么?
- 我要安装 ZF 模块吗?ZF3 有什么可以使用的东西吗?
- 我应该在代码中为我的服务创建一个模块吗?其他模块是否应将此 REST 模块用于业务逻辑?