我正在尝试测试我的ZF2应用程序的控制器.假设这个控制器在我的A模块中.
在模块的onBootstrap方法中,我使用服务管理器来检索另一个模块的服务,比如说我没有加载.Module.phpAB
如何在服务管理器中设置所请求服务的模拟?请注意,我不能$this->getApplicationServiceLocator()在测试中使用它,因为这已经调用了Module.onBootstrap我的A模块的方法.
要发布一些代码,这就是我现在正在做的事情
bootstrap.php中
namespace Application;
use Zend\Mvc\Service\ServiceManagerConfig;
use Zend\ServiceManager\ServiceManager;
use RuntimeException;
class Bootstrap
{
protected static $serviceManager;
public static function init()
{
$modulePath = static::findParentPath('module');
$vendorPath = static::findParentPath('vendor');
if (is_readable($vendorPath . '/autoload.php')) {
$loader = include $vendorPath . '/autoload.php';
} else {
throw new RuntimeException('Cannot locate autoload.php');
}
$config = [
'modules' => [
'Application',
],
'module_listener_options' => [
'module_paths' => [
$modulePath,
$vendorPath
] …Run Code Online (Sandbox Code Playgroud) 我开始使用zend框架2,他们有一个安装和配置mod_rewrite for apache 的先决条件.Apache 2.2.22预装在Mac OS X 10.8.2上.是否有一种简单的方法来安装和配置apache的mod_rewrite?
我遇到的唯一帮助建议重新编译apache.这是唯一的方法吗?
当超过3个用户同时使用它时,我的ZF2应用程序似乎非常慢.
我使用xdebug和webgrind来分析我的代码,而我的函数似乎很慢,所以它必须是zf2中的自我优化问题.
对于缓存我使用EvanDotPro的EdpSuperluminal模块,这似乎提高了应用程序的性能.
我们使用nginx反向代理,但也没有意义.
我需要一些好的建议来增加高流量的响应.我同时谈论30多个连接用户.
有人试过zf2吗?我无法理解在zf2中使用会话的新机制.如何在新的zend框架中编写和读取会话?
我也在互联网上找不到任何例子.
我最近决定在Zend Framework 2中启动一个项目,并且无法在HostGator共享服务器上运行它.
默认情况下,HostGator的共享服务器在PHP 5.2.2中运行,如果您上传ZF2 Skeleton应用程序,它将无法开箱即用.
此外,如果您碰巧具有对HG共享帐户的SSH访问权限(通常必须请求它),您将无法运行.PHAR文件,因为PHP的CLI版本也是5.2.2.
幸运的是,我得到了它的工作......见下文.
如何在Zend Framework 2中配置(和使用)多个数据库?目前我在global.php中有这个:
return array(
'db' => array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=my_db;host=localhost',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
'username' => 'user',
'password' => '******',
),
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
),
),
);
Run Code Online (Sandbox Code Playgroud)
但我没有看到添加第二个的方法.
我想在整个应用程序(全局)中将一系列变量传递给我的layout.phtml.我的意思是我不想用
$this->layout()->someVar = someValue;
Run Code Online (Sandbox Code Playgroud)
在我所获得的每一个动作中,因为这将是许多额外的工作和代码.那么有没有办法在一个地方做到这一点?或者我提到的就是我得到的一切!希望不是 :)
也许使用会话? - 雷米托马斯
谢谢你的解决方案.暂时这就是我正在使用的东西.用于登录用户信息,系统和布局设置以及ACL列表.但问题是我必须在layout.phtml中定义一个我认为不合适的新对象,是吗?我在某处读到,我们需要在视图模型中使用的任何数据都应该使用控制器操作传递给它.特别是我不喜欢偷工减料,所以如果有一个干净的方法,我宁愿不这样做.最近我必须为每个用户获取未读消息的数量,并在layout.phtml中使用它.所以,如果我在layout.phtml中这样做,那么在视图模型或布局中有很多php脚本.
谢谢
我正在学习ZF2.0测试版.在ZF1中,我们可以在控制器中动态更改布局:
Zend_Layout::getMvcInstance()->setLayout('layoutname');
Run Code Online (Sandbox Code Playgroud)
但是在ZF2.0中, Zend\Layout类没有方法getMvcInstance().我认为它可以使用依赖注入但不确定.
我必须将应用程序从Zend Framework 1.12.0迁移到版本2.似乎还没有迁移指南.我已经研究过ZF2编码约定,并且我采用了依赖注入(Zend\Di)和PHP 5.3命名空间.我的目标是将我的ZF1应用程序重构为ZF2模块.
问题:是否可以在每个步骤之后逐步执行至少部分工作的应用程序并避免大量重构步骤?如果是,步骤是什么?
这是我对这种逐步迁移的想法,但我不知道在每一步之后我是否最终得到了一个有效的应用程序:
但是,只有当某些ZF2组件与ZF1组件一起工作时,我才会在每个步骤后都有一个workin应用程序.我不知道是否可以使用ZF1控制器来使用ZF1视图(和查看助手).
我有一个ManyToMany我闯入OneToMany和ManyToOne关系.我想构建一个具有复选框而不是集合的表单,我正在使用'DoctrineObject'保湿器,但它不起作用,我不知道出了什么问题.
我从我的代码中删除了所有其他不相关的字段.
角色实体:
/**
* @orm\Entity
* @orm\Table(name="roles")
*/
class RolesEntity extends HemisEntity {
/**
* @orm\Id
* @orm\Column(type="integer");
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
/**
* @orm\Column(name="role_code",type="string")
*/
protected $roleCode;
/**
* @orm\OneToMany(targetEntity="RolesPermissionsEntity", mappedBy="role", cascade={"persist"})
*/
protected $rolePermissions;
public function __construct()
{
$this->rolePermissions = new ArrayCollection();
}
public function setRolePermissions($rolePermissions)
{
$this->rolePermissions = $rolePermissions;
return $this;
}
public function addRolePermissions(Collection $rolePermissions)
{
foreach ($rolePermissions as $rolePermission) {
$rolePermission->setRole($this);
$this->rolePermissions->add($rolePermission);
}
}
public function …Run Code Online (Sandbox Code Playgroud) zend-framework2 ×10
php ×6
apache ×1
composer-php ×1
doctrine-orm ×1
macos ×1
migration ×1
optimization ×1
performance ×1
phar ×1
php-5.2 ×1
phpunit ×1
session ×1
testing ×1
zend-form2 ×1