小编Mat*_*teo的帖子

如何翻译Symfony2异常

我正在使用yml格式来翻译我的网络应用程序,但我遇到了一个问题.

我想做什么:

#exception.en.yml
exception.bad: 'Bad credentials'
Run Code Online (Sandbox Code Playgroud)

我所知道的可能是:

#exception.en.yml
'Bad credentials': 'Bad credentials'
Run Code Online (Sandbox Code Playgroud)

这是翻译异常的唯一方法吗?

php yaml symfony twig

5
推荐指数
1
解决办法
2255
查看次数

在Symfony 2.5和Doctrine查询构建器中使用括号(>)

我正在使用Symfony 2.5和Doctrine开展小项目.我的查询完全在MySQL Workbench中运行.不幸的是,在我的查询构建器中使用括号时,我在下面会收到错误:

  • QueryException:[语法错误]第0行,第19列:错误:预期的Doctrine\ORM\Query\Lexer :: T_CLOSE_PARENTHESIS,得到'>'

    $grades = $qb
                    ->select(array(
                        'SUM(g.final > 89.5) as a',                            
                        'CONCAT (gcs.number, gcs.letter) as class'
                    ))
                    ->from('FicusEschoolBundle:Grade', 'g')
                    ->leftJoin('g.course', 'gc')
                    ->leftJoin('gc.schoolclass', 'gcs')
                    ->where($qb->expr()->eq('gc.subject', $rid))
                    ->andWhere($qb->expr()->in('g.quarter', $filterQuarter))
                    ->groupBy('gc')
                    ->orderBy('gcs.number')
                    ->getQuery()
                    ->getArrayResult();
    
    Run Code Online (Sandbox Code Playgroud)

mysql sum function symfony doctrine-orm

5
推荐指数
1
解决办法
651
查看次数

Memcached在Symfony2 + Doctrine2应用程序的负载下大幅减速

我一直在对我的Symfony2应用程序进行负载测试,我发现的其中一个瓶颈似乎是Memcached.

我在webserver上使用memcached来缓存doctrine元数据和查询,我正在使用amazon的elasticache memcached作为doctrine的结果缓存.

在没有任何负载的请求下,我的端到端时间是300-350ms,memcached占这些ms中的大约10个

在此输入图像描述

但是,在25个并发请求的负载下,我的总响应速度减慢到大约2500毫秒,其中很大一部分似乎是memcached

在此输入图像描述

39个memcached查询中有34个获取classmetadata,其中一些是.1ms而其他的是40或50ms,它似乎很随机.

我已经尝试在本地memcache配置文件中增加最大连接数和缓存大小,我还能做些什么来尝试从我的应用程序中删除这个瓶颈?

谢谢一堆 -

php memcached caching symfony doctrine-orm

5
推荐指数
1
解决办法
572
查看次数

删除子类属性中的所有验证约束

我有清除从超类扩展的所有验证约束的问题.以下是我的代码

user.php的

  * @var string
  * @ORM\Column(type="text", unique=true)
  * @Assert\NotBlank()
  * @Assert\NotNull()
  * @AdminAssert\MyCustomValidation
  */
 protected $phoneNumber;
Run Code Online (Sandbox Code Playgroud)

在Admin.php中,我编写了类似下面的代码

class Admin扩展用户

  * @var string
  * @ORM\Column(type="text", unique=true)
  */
 protected $phoneNumber;
Run Code Online (Sandbox Code Playgroud)

我想删除所有验证约束但不能删除它.

symfony

5
推荐指数
1
解决办法
777
查看次数

Symfony - 注释从未被导入

我正在使用 Symfony 框架并打算将自动文档引擎添加到我的项目的 RESTful api 中。

经过一番搜索,我找到了 apidoc 引擎(http://apidocjs.com/)。它的工作原理非常简单:您必须为 RESTful api 的每个控制器添加一些注释,并且将生成文档。

注解的例子是:

/**
 * @Route("/api/dictionary_list/{userId}/{sessionKey}", name="api/dictionary_list")
 * @api {get} /api/dictionary_list/{userId}/{sessionKey} 01. Values list (ids) for all system dictionaries
 * @apiName Dictionary list
 * @apiGroup Dictionary
 *
 * @apiParam {Integer} userId  User's ID received in authorization request
 * @apiParam {String} sessionKey  Session key received in authorization request
 *
 * @apiSuccess {Integer} parcelStatuses  The name of current dictionary
 * @apiSuccess {String} itemId  Item id which used in requests
 * …
Run Code Online (Sandbox Code Playgroud)

php annotations symfony doctrine-orm api-doc

5
推荐指数
1
解决办法
4714
查看次数

Symfony测试-ClockMock / DateTime

我在为基于JSON API的应用程序创建复杂测试时寻求帮助。

简短的问题场景:

  • 测试创建临时实体(供比较)
  • EntityManagerMock设置为等待persist($ temporaryEntity)
  • 使用某些参数测试调用真实方法
  • 方法创建实体并尝试保存在模拟的EM
  • 测试失败,因为时间更改了1秒

在此处输入图片说明

我们尝试使用ClockMock,但它仅适用于名为/用于命名空间的类。我们的方法在其他名称空间,实体在下一个创建。

我们正在寻找一种解决方案,该方法如何临时重写PHP平台\ DateTime类-或一种技术,如何对项目中的所有名称空间/类使用ClockMock(但仅用于测试)。我们试图修改基于Symfony的ClockMock-但找不到好方法:-/。

有什么办法吗?(我不想使用类似get_declared_class()之类的东西,并用它调用clockMock :: register-因为它对于大约15.000个测试:-/非常缓慢。

谢谢大家!

php phpunit unit-testing mocking symfony

5
推荐指数
1
解决办法
1121
查看次数

在 symfony 3 上的所有 phpunit 测试之前加载一次装置

我有一个 SF3 应用程序和很多功能测试。在每次测试之前,我们加载并清除所有夹具。所有测试的时间都那么长。我想只加载一次夹具,并在上次测试后截断。

这是提高功能测试速度的好方法吗?

phpunit 中是否有一种 php 方法,它在所有测试之前只启动一次?(因为setUpBeforeClass 是在每次测试之前执行的)

我的测试类中的 setUpBeforeClass 方法示例。

class SearchRegisterControllerTest extends WebTestCase
{
    /** @var Client $client */
    private $client;

    protected static $application;

    public static function setUpBeforeClass()
    {
        $kernel = static::createKernel();
        $kernel->boot();

        $em = $kernel->getContainer()->get('doctrine.orm.entity_manager');
        $schemaTool = new SchemaTool($em);
        $metadata = $em->getMetadataFactory()->getAllMetadata();

        $schemaTool->dropSchema($metadata);
        $schemaTool->createSchema($metadata);

        /** @var Client $client */
        $client = static::createClient();
        $em = $client->getContainer()->get('doctrine.orm.entity_manager');

        $loader = new Loader();

        $loader->loadFromDirectory('src/MyNameSpace/AppBundle/DataFixtures/ORM');

        $purger = new ORMPurger();
        $executor = new ORMExecutor($em, $purger);
        $executor->execute($loader->getFixtures(), true);

    }
Run Code Online (Sandbox Code Playgroud)

提前致谢。

performance phpunit fixtures symfony doctrine-orm

5
推荐指数
1
解决办法
2588
查看次数

在TWIG中渲染控制器并显示表单错误

我有indexAction和contactAction

contactAction是一个简单的表单,没有映射字段(FormType),如下所示:

/**
 * @Route("/contact", name="contact")
 * @Template()
 * @param Request $request
 * @return array
 */
public function contactAction(Request $request)
{
    $form = $this->createForm(new ContactType());

    $form->handleRequest($request);

    if ($form->isValid()) {
        $firstName = $form->get('first_name')->getData();
        $lastName = $form->get('last_name')->getData();
        $email = $form->get('email')->getData();
        $message = $form->get('message')->getData();
    }
    return array(
        'form' => $form->createView()
    );
}
Run Code Online (Sandbox Code Playgroud)

我用这个TWIG命令在我的indexAction中渲染这个表单:

{{ render(controller('RusselBundle:Default:contact')) }}
Run Code Online (Sandbox Code Playgroud)

一切都很好,如果页面没有重新加载,HTML5验证器工作正常,但如果表单有一些错误,如:firstName长度,错误根本不显示,我该怎么办,以便错误出现在indexAction形式?任何帮助,将不胜感激.我只是好奇它是可能的,如果 - 如何?对不起我的英语不好....

php forms symfony-forms symfony twig

4
推荐指数
1
解决办法
1743
查看次数

symfony2使用get参数渲染控制器

如何使用twig中的get参数渲染控制器?

{{ render(controller('AutoBundle:MyController:main', { 'id': id, 'active': true } )) }}
Run Code Online (Sandbox Code Playgroud)

像这样调用控制器:https://example.com/users/323?active = true

php symfony twig

4
推荐指数
1
解决办法
7385
查看次数

Twig(在Symfony中):从twig扩展访问模板参数

我想从我的twig扩展(过滤器,函数...)访问Twig模板参数,而不显式传递它.

我总是需要在所有树枝扩展中使用"displayPreferences"变量,以便更改显示和转换值的方式.

可以将此变量作为模板参数传递,并将其作为我运行的每个Twig过滤器/函数的参数传递,但这会使模板难以阅读.

这样的事情会很棒:

/**
 * Twig filter (render a date using the user defined format)
 *
 * @param Date $date
 */
public function renderUserDate ($date) {
    // Somehow, get a template parameter, without receiving it as argument
    $renderPreference = $this->accessTemplateParameter('displayPreferences');

    switch ($renderPreference['dateFormat']) {
        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

php templates symfony twig

4
推荐指数
1
解决办法
1745
查看次数