在Zend Framework 2中,将初始模块横幅添加到控制台应用程序非常简单.
我们所需要的只是实现getConsoleBanner
和getConsoleUsage
方法并实现Zend\ModuleManager\Feature\ConsoleUsageProviderInterface
或ConsoleBannerProviderInterface
接口.
这足以public/index.php
通过CLI启动时在控制台中转储这些消息.
在Zend Framework 3中,它不一样.
执行相同的设置不会提供相同的结果.实际上在控制台中我们看到骨架应用程序的默认html页面与我们通过浏览器访问它的方式相同.
我们安装自定义模块之前,该网页被看到:这里是相关的文档zend-mvc-console
模块
https://zendframework.github.io/zend-mvc-console/intro/
即使按照建议安装模块('Zend\Mvc\Console'
在模块定义中添加),也不会显示控制台横幅.我已经在方法中使用var dumping进行了测试,并且我能够查看数据,因此框架执行这些方法但在控制台中没有显示结果.
我已经测试了控制台路由和控制器.找到路径,执行控制器操作但是cli中没有显示任何内容.
我已经挖掘了框架的代码,似乎Zend\Mvc\Console\ResponseSender\ConsoleResponseSender
该类永远不会被执行.
我是否必须注册一些view_manager
策略才能在CLI中显示某些内容?
以下是zf3骨架应用程序的源代码:https://gist.github.com/kachar/06f0c9096bcc1cc0b00f4612aed1b68b
运行应用程序:
$ php -v
PHP 7.0.6 (cli) (built: Apr 27 2016 14:00:40) ( ZTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
$ php public/index.php
Application\Module::getConsoleBanner
Application\Module::getConsoleUsage
$ php public/index.php user
Application\Controller\IndexController::indexAction
Run Code Online (Sandbox Code Playgroud) 我next-i18next
已经在几个项目中使用了 package,而且效果很好。
在我当前的项目中,我需要集成 i18n,但这次只有 cookie 支持,没有国际化路由,我想知道我是否可以用这个包实现这一点,或者我应该返回react-i18next
并i18next
样本:
// No cookie or EN cookie
https://app.example.com shows EN version
// Cookie `next-i18n-lang` set to specific language (IT, DE, etc)
https://app.example.com shows translated version
Run Code Online (Sandbox Code Playgroud)
我认为我们不能next/router
locale
开箱即用,但这作为集成的缺点是可以接受的。
最近我一直在寻找解决以下情况的方法:
我有结构的 mysql 表:
CREATE TABLE IF NOT EXISTS `battles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`active` tinyint(1) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`begindate` datetime NOT NULL,
`enddate` datetime NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)
每场战斗都有开始日期和结束日期。开始日期是插入的日期时间,通常结束日期是三天后。
我想创建一个 mysql 事件,在战斗结束日期停止战斗(设置活动 = 0)。我希望在战斗表中的插入触发器上创建此事件。
有一个相关问题的答案很少(这里)。
他们建议:
您应该能够使用触发器和事件调度程序来做到这一点:
- 在每次更新/插入时触发的表上创建一个触发器
- 此触发器创建在行的日期时间发生的计划事件并更新>您的第二个表
我试图创建这样一个查询,但没有成功。
DELIMITER |
DROP TRIGGER IF EXISTS battle_create_end|
CREATE TRIGGER battle_create_end AFTER INSERT ON battles
FOR EACH ROW BEGIN
CREATE EVENT …
Run Code Online (Sandbox Code Playgroud) 我有两个迭代器,我必须合并到一个结果.
以下是数据样本:
ArrayIterator Object
(
[storage:ArrayIterator:private] => Array
(
[0] => Array
(
[period] => 04/04/2012 16:00:00
[bl_subs] => 1
[bl_unsubs] => 1
[bl_block_total] => 1
)
[1] => Array
(
[period] => 04/04/2012 17:00:00
[bl_subs] => 1
[bl_unsubs] => 2
[bl_block_total] => 0
)
[2] => Array
(
[period] => 04/04/2012 18:00:00
[bl_subs] => 0
[bl_unsubs] => 0
[bl_block_total] => -1
)
[3] => Array
(
[period] => 04/04/2012 19:00:00
[bl_subs] => 2
[bl_unsubs] => 0
[bl_block_total] => -2 …
Run Code Online (Sandbox Code Playgroud) 我有这样的 php 数组结构:
array(
'servicemanagement.scheduler.events.edit' => 'Edit',
'servicemanagement.scheduler.events.delete' => 'Delete',
'servicemanagement.scheduler.events' => 'Events',
'servicemanagement.scheduler' => 'Scheduler',
'servicemanagement.subscribers' => 'Subscribers',
'servicemanagement.subscribers.index' => 'Index',
'servicemanagement' => 'Service management',
);
Run Code Online (Sandbox Code Playgroud)
我想将其转换为多维数组,例如:
array(
'servicemanagement' => array(
'id' => 'servicemanagement',
'title' => 'Service Management',
'children' => array(
'scheduler' => array(
'id' => 'servicemanagement.scheduler',
'title' => 'Scheduler',
'children' => array(
'events' => array(
'id' => 'servicemanagement.scheduler.events',
'title' => 'Events',
'children' => array(
'edit' => array(
'id' => 'servicemanagement.scheduler.events.edit',
'title' => 'Edit',
'children' => array(),
),
'delete' …
Run Code Online (Sandbox Code Playgroud)