小编web*_*com的帖子

如何在JSON响应中呈现ZF2视图?

到目前为止,我已经想通了如何返回Zend框架2.首先一个典型的JSON响应,我加入ViewJsonStrategystrategies了部分view_manager配置.然后,ViewModel我返回一个JsonModel设置了所有变量的实例,而不是从控制器操作返回一个实例.

既然我已经想到了这一点,我需要了解如何渲染视图并在JSON响应中返回它.在ZF1中,我能够使用$this->view->render($scriptName),它将HTML作为字符串返回.在ZF2中,该Zend\View\View::render(...)方法返回void.

那么......我如何渲染HTML视图脚本并在一个请求中以JSON响应返回它?

这就是我现在所拥有的:

    if ($this->getRequest()->isXmlHttpRequest()) {
        $jsonModel = new JsonModel(...);

        /* @todo Render HTML script into `$html` variable, and add to `JsonModel` */
        return $jsonModel;
    } else {
        return new ViewModel(...);
    }
Run Code Online (Sandbox Code Playgroud)

php json zend-framework-mvc zend-framework2

20
推荐指数
2
解决办法
3万
查看次数

在Zend Studio(Eclipse PDT)中跨多个文件扩展的单个JavaScript对象的自动完成

我的IDE是Zend Studio 8,它具有JavaScript的相对基本视角(类似于Eclipse PDT中的透视图,如果不相同).在我正在处理的应用程序中,我们在多个文件中扩展了一个基础对象,这有效地扼杀了自动完成功能.请参阅下面的示例场景......

// global.js
var App = {
    objectA: {
        method1: function() {},
        method2: function() {}
    },
    objectB: {
        method1: function() {},
        method2: function() {}
    }
};

// extend.js
App.Extend = {
    anotherMethod: function() {}
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,键入App.会导致自动完成显示为objectAobjectB,但不是Extend.如果我将扩展添加到global.js中的App变量,它将出现在自动完成中,但不会出现在anotherMethod中.如果我要使用var Extend = { /* code */ };,自动完成将适用于该Extend对象,因此问题似乎与代码扩展到多个文件的事实无关.也许是因为单个对象分布在多个文件中......或其他内容.

有人有主意吗?

javascript php eclipse eclipse-pdt zend-studio

17
推荐指数
1
解决办法
862
查看次数

PHPUnit代码覆盖生成导致内存耗尽

我目前正在使用Zend Framework与PHPUnit一起对应用程序进行单元测试.当Hudson执行PHPUnit shell命令时,在代码覆盖生成期间的某个时间达到最大PHP内存限制.我目前总共有41个测试,有334个断言.

通过使用-d memory_limit=768M开关将memory_limit设置提高到768M,我成功地消除了这个错误; 但是,我担心随着复杂性的增加以及测试/断言的总数,我将没有足够的内存来生成用于代码覆盖率统计的HTML.

操作系统: CentOS 5.5
控制面板: WHM/cPanel
CI服务器: Hudson

/usr/local/bin/phpunit 
  --verbose  
  -d memory_limit=512M  
  --log-junit ../../build/logs/phpunit.xml   
  --coverage-clover ../../build/logs/coverage/clover.xml   
  --coverage-html ../../build/logs/coverage-html/  
Run Code Online (Sandbox Code Playgroud)

致命错误:允许的内存大小为536870912字节

在提交我的更改并让Hudson处理其余的更改之前,我使用Windows 7进行开发.在W7中运行相同的命令时,内存使用率从未超过340MB.

php phpunit zend-framework hudson jenkins

15
推荐指数
1
解决办法
1万
查看次数

PHP 5.4的简化字符串偏移读数

正如你们许多人所知,PHP 5.4 alpha已经发布.我对以下问题有疑问.

简化的字符串偏移读数. $str[1][0]现在是一个法律结构.

$str[1][0]工作究竟如何?

编辑: http ://php.net/releases/NEWS_5_4_0_alpha1.txt

php arrayaccess

10
推荐指数
2
解决办法
1185
查看次数

服务层中的数据访问和安全性(Doctrine&ZF)

我们最近开始使用Doctrine 2.2和Zend Framework 2的一部分来改进组织,减少重复等.今天,我开始提出实现服务层的想法,作为我们的控制器和Doctrine实体之间的中介.

现在,我们的大部分逻辑都存在于控制器中.另外,我们使用动作助手来测试某些权限; 然而,在实施Zend\Di后我想出了一种新的方法.我开始创建特定于实体的服务模型,它使用Zend\Di注入EntityManager实例,以及当前用户的权限.

控制器代码如下:

class Project_DeleteController extends Webjawns_Controller_Action
{
    public function init()
    {
        $this->_initJsonContext();
    }

    public function indexAction()
    {
        $response = $this->_getAjaxResponse();

        $auditId = (int) $this->_getParam('audit_id');
        if (!$auditId) {
            throw new DomainException('Audit ID required');
        }

        /* @var $auditService Service\Audit */
        $auditService = $this->getDependencyInjector()->get('Service\Audit');

        try {
            $auditService->delete($auditId);
            $response->setStatusSuccess();
        } catch (Webjawns\Exception\SecurityException $e) {
            $this->_noAuth();
        } catch (Webjawns\Exception\Exception $e) {
            $response->setStatusFailure($e->getMessage());
        }

        $response->sendResponse();
    }
}
Run Code Online (Sandbox Code Playgroud)

以及我们的一个服务层的示例.构造函数有两个参数 - 一个是EntityManager,另一个是Entity\UserAccess对象 - 由Zend\Di注入.

namespace Service;

use Webjawns\Service\Doctrine,
    Webjawns\Exception;

class Audit extends AbstractService …
Run Code Online (Sandbox Code Playgroud)

php model-view-controller service-layer doctrine-orm zend-framework2

6
推荐指数
1
解决办法
1095
查看次数

用于Jenkins的PHP构建失败了"无法运行程序"phploc"'

尝试运行构建脚本时出现以下错误.

/var/lib/jenkins/jobs/IPS (trunk)/workspace/build.xml:62: Execute failed: java.io.IOException:  
Cannot run program "phploc": java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试切换到jenkins用户,并能够顺利运行脚本.我也检查了$PATH并尝试重新安装.没运气!

  • CentOS 5/6
  • PHP 5.4(Zend Server)
  • 詹金斯1.477
  • PHP QA组件(最新)

php continuous-integration centos jenkins

6
推荐指数
1
解决办法
5109
查看次数

Zend Studio IDE中"条件分配"警告背后的理由是什么?

鉴于:

if ($variable = get_variable('variable')) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

*$ variable = get_variable('variable')*在Zend Studio中抛出'条件分配'警告.我理解这个警告意味着什么,但有谁知道它背后的理由是什么?它只是编码惯例,可读性等问题吗?

php warnings zend-studio

3
推荐指数
1
解决办法
568
查看次数

重用错误消息的方法

我们将PHP 5.3和Zend Framework用于大型项目,并且遇到了方便的问题.我们在应用程序的不同部分一遍又一遍地重复使用相同的错误消息,例如"您无权完成此操作".有没有人有任何重复使用错误消息的独特方法,所以我们不必一遍又一遍地重写它们?

我的第一个想法是做一些像这样简单的事情:

class ErrorMessage
{
    const ERROR_NO_PERMS = 'noPerms';
    const ERROR_INT = 'int';

    protected static $_messages = array(
        self::ERROR_NO_PERMS => 'You do not have permission to complete this action',
        self::ERROR_INT      => "'%s' must be an integer",
    );

    public static get($errorCode)
    {
        if (!array_key_exists($errorCode, self::$_messages)) {
            // error
        }

        // check for translation

        return self::$_messages[$errorCode];
    }
}
Run Code Online (Sandbox Code Playgroud)

你会怎么做?(请记住,我们希望将其与ZF集成,因此我们对扩展到本机ZF类的任何想法持开放态度.)

php error-handling zend-framework php-5.3

3
推荐指数
1
解决办法
94
查看次数

php://输入返回空字符串

以下代码最近开始返回空字符串.它适用于其他系统,因此它似乎不是代码本身的问题.我真的消除了所有的服务器端代码,它仍然做了同样的事情.我也试过使用file_get_contents无济于事,只是在黑暗中拍摄.

$fileStream = fopen('php://input', 'rb');

$fileData = '';
while ($buffer = fread($fileStream, 4096)) {
    $fileData .= $buffer;
}
Run Code Online (Sandbox Code Playgroud)

服务器: Zend Server 5.1.0(Apache 2.2.3)

语言: PHP 5.3.5

前端: Plupload(JavaScript插件)

php apache zend-framework zend-server-ce

2
推荐指数
1
解决办法
1947
查看次数