问题标签 [laminas]
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.
composer-php - Laminas-Cache 2.13 PHP8 升级
我在将服务器从 PHP7.3 升级到 PHP8.0 时遇到了一些问题,所以我想我会列出我发现的内容并询问其他人是否有更好的解决方案。
我遇到的问题:我有一个 PHP Laminas 应用程序,它使用 composer.json 中的 laminas/laminas-cache 包;问题是它有几个与 PHP8 不兼容的依赖项(另外,一些依赖项被放弃了),所以我收到如下错误:
看起来 laminas/laminas-cache 3.0 将解决一堆依赖问题,但它仍处于 Dev 状态,因此对于我的生产环境来说它被认为太不稳定了。这意味着我必须使用 laminas/laminas-cache 2.13。
如何修复它:我花了一段时间才找到这个文档,但据我所知,您应该通过将它们放在替换部分中来选择要忽略的依赖项:
https://github.com/laminas/laminas-cache/issues/88
这是要“替换”的标准包列表:
一旦我将该部分复制/粘贴到composer.json中,它就可以让我成功运行composer update
而不会出现问题,但我不喜欢将一堆包替换为“*”版本通配符。
所以......我的问题是:有没有更好的方法来做到这一点,或者我是否偶然发现了最好的解决方案,直到 laminas/laminas-cache 3.0 完成?
zend-form - Laminas / Zf3 - 从 Fieldset 访问表单参数
我在我的 Laminas 项目中遇到了一个问题。在我的控制器中,我用参数调用了我的表单。我的表单包含字段集的添加功能,我想读取我的字段集中的参数。我怎样才能做到这一点 ?
这是我的控制器中的功能:
这是我的表格:
这是我的字段集
问题是如何将我的参数放入字段集 __construct 或 init 函数中?
php - 向层层添加事件
我正在尝试为 Laminas 框架添加事件,该事件将在触发\Laminas\Mvc\MvcEvent::EVENT_DISPATCH 时触发。但绝对没有任何事情发生,就像这个触发器不存在一样。我究竟做错了什么?
这是module\Application\src\Module.php下的代码:
php - PHP - Laminas DB 是否支持无参数调用存储过程?
我正在使用 PHP、Laminas DB 和 DB2。
我一直在查看Laminas DB的文档,但我不知道该怎么做。我没有看到调用具有 OUT 参数的 SQL 存储过程的方法。
所以要执行这样的 SQL 语句:
然后能够以$outputVar
某种方式利用我的 PHP 中返回的值。
我正在寻找如何做到这一点,或者确认这是不可能的。我很确定这在这一点上不受支持,但我抱有希望。
php - Laminas API 工具中带有参数的自定义验证器
如何在 API 工具 GUI 中添加带有参数的自定义验证器?
我写了一个自定义验证器+工厂。
我那里有一些 setter+getter。
如何按照以下方式配置此验证器:
- 显示在 GUI 的可用验证器列表中(我正在添加一个工厂来
validators.factories
键入module.config.php
- 允许用户选择参数(例如
maxlen
,minlen
等)。现在它只显示一个可用的选项:breakchainonfailure
类似于 StringLength 验证器:
我的工厂:
php - 在 laminas 中设置默认数据库 quoteIdentifiers
我正在尝试为 Sql Server 和 MySQL 调整一个 laminas webapp。我的问题是,MySQL的默认报价标识符(默认设置)是``,而在Sql Server中是[],我在框架的laminas的AbstractPlatform类中找不到任何函数来操作默认的quoteIdentifier代码,因为此属性受保护。
我尝试寻找可从模型类访问的经典 setter 方法,并将所需的引号标识符字符直接分配给 quoteIdentifier() 方法。看来这个值只能在供应商代码中操纵......
有没有同样问题的人可以帮助我,或者有更好的方法吗?
php - 层层路由作为 POST?
我使用 Laminas 并且在 ControllerAction 函数中我想通过使用重定向到另一个 url 作为帖子$this->redirect()->toRoute('newSite', $noURLParams, $options);
当我使用“查询”-Option ( $options = [$query => ['postPara1' => 'blabla', 'postPara2' => 'blubblub']]
) 时,我将在 URL 中将“post”-Parameter 作为 GET-Parameter 获取:
hhttp://localhost/new-site?postPara1=blabla&postPara2=blubblub
这样大家就可以看到参数的内容了。
有没有办法让 toRoute() 从中发出“POST”?还是我必须为此使用另一个功能?
php - 未创建项目中的路由,我收到一条消息“无法创建名称为 Domain\v1\SmartLocker\Action\DeliverPackage 的服务。原因:”
我在使用 Zend Expressive 的项目中创建了一个通过 POST 方法调用的新路由,然后我使用 Insomnia 对其进行了测试,但服务器给我的答案如下:
“无法创建名为 Domain\v1\SmartLocker\Action\DeliverPackage 的服务。原因:”
这是我的文件夹的结构,其中我的 Action 和我的 Service 是:
这是位于我的 ConfigProvider.php 中的 getRoutes() 方法:
这是错误:
我尝试过但没有成功的事情:
- 删除数据/config-cache.php
- 更改 data/config-cache.php 权限
- 更改路由名称和文件(我不知道这是否有意义)
有没有人经历过这样的事情,你能帮忙吗?
docker - 错误:(根)不允许附加属性层
每次在 Windows CLI 中执行 docker-compose up -d 命令时,我都会收到此错误。请帮我解决这个问题。我正在使用的 Docker-compose.yml 文件是 Laminas 框架应用程序的一部分,并且是在那里预先编写的。这是 docker-compose.yml 代码:
这是 Dockerfile 代码:
methods - PHP Laminas PHPStan - 调用未定义的方法 Laminas\Stdlib\RequestInterface::isPost()
我们在 laminas 项目上运行 phpstan 并遇到错误。
例如,在控制器中,我们有一些可以正常工作的标准代码。
$request = $this->getRequest();
if ($request->isPost()) { ... }
然而 phpstan 抱怨:
调用未定义的方法 Laminas\Stdlib\RequestInterface::isPost()
问题似乎是 getRequest() 实际上返回了 Laminas\Http\PhpEnvironment\Request 的一个实例,它确实从 Laminas\Http\Request 继承了 isPost 函数。但是RequestInterface中没有定义这个函数。
一种解决方案是在 RequestInterface 中定义 isPost,尽管我更愿意避免更改供应商代码。
有没有更好的方法来解决这个问题?