小编gha*_*ari的帖子

在symfony 2.7中找不到'templating.helper.router'服务

我将我的项目从2.6升级到2.7,我在工作结束时收到此错误:

[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]                                           
The service "knp_paginator.helper.processor" has a dependency on a non-existent service "templating.helper.router". 
Run Code Online (Sandbox Code Playgroud)

我搜索服务容器,但我找不到服务列表中的服务(容器:调试),我在这个文件中找到了"templating.helper.router"的服务定义

/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml
Run Code Online (Sandbox Code Playgroud)

为什么这个服务不是由服务容器创建的?


     /usr/bin/php /var/www/ghanbari/anar/app/console debug:container --tag=templating.helper -v

Deprecated: The Symfony\Component\DependencyInjection\Definition::setFactoryMethod method is deprecated since version 2.6 and will be removed in 3.0. Use Definition::setFactory() instead. in /var/www/ghanbari/anar/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Definition.php on line 137

Call Stack:
    0.0004     227656   1. {main}() /var/www/ghanbari/anar/app/console:0
    0.0161    2719288   2. Symfony\Component\Console\Application->run() /var/www/ghanbari/anar/app/console:27
    0.0178    2896416   3. Symfony\Bundle\FrameworkBundle\Console\Application->doRun() /var/www/ghanbari/anar/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:126
    0.0178    2896640   4. Symfony\Component\HttpKernel\Kernel->boot() /var/www/ghanbari/anar/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:70
    0.0210    3132184   5. Symfony\Component\HttpKernel\Kernel->initializeContainer() /var/www/ghanbari/anar/app/bootstrap.php.cache:2387
    0.0801    6683560   6. Symfony\Component\DependencyInjection\ContainerBuilder->compile() /var/www/ghanbari/anar/app/bootstrap.php.cache:2609
    0.0806    6716880   7. Symfony\Component\DependencyInjection\Compiler\Compiler->compile() …
Run Code Online (Sandbox Code Playgroud)

symfony knppaginator symfony-2.7

10
推荐指数
1
解决办法
2080
查看次数

orphanRemoval绕过onDelete吗?

假设我们有两个实体(ProfileAddress).配置文件可以包含许多地址.在那种情况下,我们有:

Profile:
    ...
    fields:
        ...
    oneToMany:
        addresses:
            targetEntity: Address
            mappedBy: profile
            orphanRemoval: true

Address:
    ...
    fields:
        ...
    manyToOne:
        profile:
            targetEntity: Profile
            inversedBy: addresses
            joinColumn:
                name: profile_id
                referencedColumnName: id
                onDelete: cascade
Run Code Online (Sandbox Code Playgroud)

现在,如果我删除了一个包含许多地址的配置文件:

$em->remove($profile);
Run Code Online (Sandbox Code Playgroud)

地址如何删除?

Doctrine是否获取与此配置文件相关的所有地址,然后将其删除或仅删除配置文件并让数据库处理地址?

我找到了一些关于Hibernate的答案,但没有关于Doctrine的答案.


编辑:从Doctrine书中添加三个注释

1.如果关联标记为CASCADE = REMOVE,则Doctrine 2将获取此关联.如果它是Single关联,它将传递此实体EntityManager#remove().如果关联是一个集合,Doctrine将循环遍历其所有元素并将其传递给EntityManager#remove().在这两种情况下,级联删除语义都是递归应用的.对于大型对象图,此删除策略可能非常昂贵.

2.使用DQL DELETE语句允许您使用单个命令删除某个类型的多个实体,而不对这些实体进行保湿.这可以非常有效地从数据库中删除大对象图.

3.使用外键语义onDelete ="CASCADE"可以强制数据库在内部删除所有关联的对象.这个策略有点难以正确,但可以非常强大和快速.但是您应该知道,使用策略1(CASCADE=REMOVE)完全绕过任何外键onDelete=CASCADE选项,因为Doctrine将显式提取并删除所有关联实体.

php doctrine symfony doctrine-orm

8
推荐指数
1
解决办法
322
查看次数

当我在FOS Rest Bundle中拥有多级子资源时,每个父控制器必须具有`get {SINGULAR} Action($ id)`方法

我有三个名为控制器BlogController,PostController,CommentControllerCommentController是子资源PostControllerPostController子资源BlogController.

/**
 * @Rest\RouteResource("blog", pluralize=false)
 */
class BlogController extends FOSRestController
{
    public function getAction($blogUri)
    {
    ...
    }
}

/**
 * @Rest\RouteResource("post", pluralize=false)
 */
class PostController extends FOSRestController
{
    public function getAction($postId)
    {
    ...
    }
}

/**
 * @Rest\RouteResource("comment", pluralize=false)
 */
class CommentController extends FOSRestController
{
    public function getAction($commentId)
    {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

使用routing.yml

mgh_blog:
    resource: MGH\BlogBundle\Controller\BlogController
    type:     rest

mgh_blog_post:
    resource: MGH\BlogBundle\Controller\PostController
    type:     rest
    parent:   mgh_blog

mgh_blog_post_comment: …
Run Code Online (Sandbox Code Playgroud)

symfony fosrestbundle symfony-2.7

7
推荐指数
1
解决办法
996
查看次数

如何在Nelmio ApiDocBundle中指定参数的格式

我使用注释的input属性@ApiDoc来指定我的api的参数,这些参数是表单的字段.

 * @ApiDoc(
 *      section="User",
 *      resource=true,
 *      input={
 *          "class"="Nik\UserBundle\Form\UserType",
 *      },
 *     ....
Run Code Online (Sandbox Code Playgroud)

data_class of form是一个对属性进行约束验证的实体.

我希望nelmio api doc将参数格式指定为实体的验证约束,但格式为空.

在此输入图像描述

如何在nelmio ApiDocBundle中指定参数格式?


编辑:也许我写了一个糟糕的问题.

我们可以为input&指定解析器output,如果我们没有为这些指定解析器,它会为input&调用所有解析器output,然后调用所有解析器UserType.

nelmio有一个名为ValidationParser的解析器,它有一个名为parseConstraint的方法,format用于输入和输出,但是这个方法没有为我的文档调用,为什么?

symfony symfony-2.7 nelmioapidocbundle

6
推荐指数
2
解决办法
7245
查看次数

GCM服务器端PHP - 未经授权的401错误

我设置了谷歌开发者控制台,支持Android版Google云消息传递.

在凭证方面,我创建了在引用中键入0.0.0.0的浏览器API密钥.实际上我创建了两种类型的键,因为我在不同的教程中找到了不同的指示.

浏览器关键图片

服务器密钥图片

我用这个PHP脚本测试了密钥

<?
/**
 * The following function will send a GCM notification using curl.
 * 
 * @param $apiKey       [string] The Browser API key string for your GCM account
 * @param $registrationIdsArray [array]  An array of registration ids to send this notification to
 * @param $messageData      [array]  An named array of data to send as the notification payload
 */
function sendNotification( $apiKey, $registrationIdsArray, $messageData )
{   
    $headers = array("Content-Type:" . "application/json", "Authorization:" . "key=" . …
Run Code Online (Sandbox Code Playgroud)

android google-api push-notification google-cloud-messaging

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

谷歌云消息限制

我知道在网站上存在类似的问题,但我感到困惑,因为http并且xmpp有差异限制:

这个页面http和之间的差异xmpp.

第一个限制是[ xmpp&http]:最多4KB的数据

第二个限制是:

http:您可以一次向1000个用户发送消息.(参考)

xmpp:对于每个发件人ID,GCM允许并行1000个连接.(参考)

您可以一次向1000个用户发送消息.因此,如果您有更多用户,则必须多次从服务器发送邮件,但每次都要向不同的用户发送邮件(参考)

第三个限制是:

http:我在android开发人员中找不到这个限制:

在没有折叠的情况下可以存储的消息数量有限制.该限制当前为100.如果达到限制,则丢弃所有存储的消息.然后,当设备重新联机时,它会收到一条特殊消息,指示已达到限制.然后,应用程序可以正常处理这种情况,通常是通过请求完全同步.(参考)

xmpp:

发送到CCS的每条消息都会收到ACK或NACK响应.未收到其中一个响应的邮件被视为待处理.如果挂起的消息计数达到100,则应用服务器应停止发送新消息并等待CCS确认某些现有的待处理消息(参考)

我的问题:

1.in第二个限制,如果我们使用http方法并拥有2000个用户,我们应该发送两次消息,每次都有1000个用户吗?,我们能做到吗?

2. xmpp不能支持组播消息,我们可以使用主题进行组播xmpp吗?

  1. 主题广播消息的限制?(参考除外)

4.在第三个限制,如果我向300个用户发送消息,并且有100个顶级用户离线,他们收到message还是notification回来并在线时?(注意:使用广播http和循环xmpp)

  1. 以主题方式限制效果?

  2. http和之间的第三个限制是否存在任何差异xmpp

7. http或存在其他限制xmpp

messaging android xmpp http google-cloud-messaging

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