小编mro*_*rok的帖子

Doctrine2是否应用过滤器来删除语句

我使用doctrine过滤器,最近注意到过滤器不适用于删除语句.我试图通过文档和谷歌挖掘,但神秘仍未解决.

例如,我有过滤器连接用户和公司所以每个选择查询,如:

$userRepo->find(12);
Run Code Online (Sandbox Code Playgroud)

并从中进行了修改

SELECT .... FROM user t0 WHERE t0.id = 12

SELECT .... FROM user t0 WHERE t0.id = 12 AND(t0.company_id ='6')

很酷,这就是我需要的.

困扰我的是删除语句似乎没有受到影响.有谁知道它是默认的doctrine架构还是我的配置错了?

过滤器

use Doctrine\ORM\Mapping\ClassMetaData;
use Doctrine\ORM\Query\Filter\SQLFilter;
use Doctrine\Common\Annotations\Reader;

class CompanyAware extends SQLFilter
{
    /**
     * @var Reader
     */
    protected $reader;

    /**
     * @param ClassMetaData $targetEntity
     * @param string $targetTableAlias
     *
     * @return string
     */
    public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias)
    {
        $query = '';
        $ann = 'Mrok\\PortalBundle\\Annotation\\CompanyAware';
        $isAware = $this->reader->getClassAnnotation($targetEntity->getReflectionClass(), $ann);

        if ($isAware) {
            $id …
Run Code Online (Sandbox Code Playgroud)

php symfony doctrine-orm

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

Symfony2.1 - HWIOAuthBundle和谷歌oauth身份验证

我正在尝试使用HWIOAuthBundle设置Symfony2.1 来处理谷歌oauth身份验证.

我已遵循捆绑说明中的手动说明,但仍然缺少某些内容.当我访问需要经过身份验证的用户(或只是输入url/connect/google)的操作时,我被重定向到Google身份验证页面 - 此部分正常运行.但是在重定向后(在登录Google并同意共享我的数据后),新用户不会在数据库中创建,我被重定向到连接/失败操作.Google身份验证应该只是验证用户身份的一种方法.知道什么可能是错的吗?

这是我的路线:

hwi_oauth_redirect:
    resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
    prefix:   /connect

google_login:
    pattern: /login/check-google
Run Code Online (Sandbox Code Playgroud)

security.yml

firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false

    secured_area:
        pattern:    ^/
        form_login:
            provider: fos_userbundle
            login_path: /connect/google
            check_path: /login/login_check
        logout: true
        anonymous: true
        oauth:
            resource_owners:
                google: "/login/check-google"
            login_path:        /connect/google
            failure_path:      /connect-fail
            # FOSUB integration
            oauth_user_provider:
                service: hwi_oauth.user.provider.fosub_bridge
Run Code Online (Sandbox Code Playgroud)

和配置

hwi_oauth:
    firewall_name: secured_area
    resource_owners:
            google:
                type:                google
                client_id:           ....
                client_secret:       ......
                scope:               "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
    fosub:
        username_iterations: 5
        properties:
            google: googleId
Run Code Online (Sandbox Code Playgroud)

谷歌redirectURL

http://xxxx/login/check-google
Run Code Online (Sandbox Code Playgroud)

我的用户实体:

class User extends BaseUser
{ …
Run Code Online (Sandbox Code Playgroud)

authentication symfony oauth-2.0 symfony-2.1 hwioauthbundle

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

使用PhpUnit时,Composer无法加载加载程序

我正在尝试将PhpUnit与Composer一起使用.为此我做了:

1添加phpunit到req composer部分:

"require": {
    "php": ">=5.3.0"
},
"require-dev": {
    "phpunit/phpunit": "3.7.*"
},
"autoload": {
    "psr-0": {"PhpProject": "src/"}
}
Run Code Online (Sandbox Code Playgroud)

2安装所需的东西:

php composer.phar install --dev

操作成功完成.

安装phpunit/phpunit(3.7.6)下载:100%

不幸的是,当我想运行测试时,我得到了

./vendor/bin/phpunit PHP致命错误:在第12行的/home/serek/php/project/tests/bootstrap.php中调用非对象的成员函数add()

出现问题是因为返回ComposerAutoloaderInit :: getLoader(); 在vendor/autoload中,将NULL返回到测试引导程序中.

任何想法如何在没有黑客加载器的情况下解决它?

代码:phpunnit.xml.dist

> <?xml version="1.0" encoding="UTF-8"?>
> 
> <phpunit bootstrap="tests/bootstrap.php" colors="true">
>     <testsuites>
>         <testsuite name="PhpProject Test Suite">
>             <directory>tests/PhpProject/</directory>
>         </testsuite>
>     </testsuites>
> 
>     <filter>
>         <whitelist>
>             <directory suffix=".php">src/PhpProject/</directory>
>         </whitelist>
>     </filter> </phpunit>
Run Code Online (Sandbox Code Playgroud)

tests/bootstrap.php(这里我只需要自动加载器)

> $loader = require_once __DIR__ . "/../vendor/autoload.php";
> $loader->add('PhpProject\\', …
Run Code Online (Sandbox Code Playgroud)

php phpunit composer-php

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

这个python代码线程是否安全(带扭曲的线程)?

我正在编写一个应用程序来收集UDP消息并每1秒处理一次.

应用程序原型如下:

from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor
import threading
import time

class UdpListener(DatagramProtocol):

    messages = []

    def datagramReceived(self, data, (host, port)):
        self.messages.append(data)

class Messenger(threading.Thread):

    listener = None

    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        while True:
            time.sleep(1)
            recivedMessages = self.listener.messages
            length = len(recivedMessages)
            messagesToProccess = recivedMessages[0:length]
            #doSomethingWithMessages(messagesToProccess)
            del self.listener.messages[0:length]
            print(length)

listener = UdpListener()

messenger = Messenger()
messenger.listener = listener
messenger.start()

reactor.listenUDP(5556, listener)
reactor.run()
Run Code Online (Sandbox Code Playgroud)

我不确定我是否可以轻松地从列表中删除起始值(del self.listener.messages [0:length]),而不会有任何传入消息更改列表和应用程序崩溃的风险.

更新 - 带锁的版本

class Messenger(threading.Thread):

listener = None
lock = threading.Lock()

def __init__(self): …
Run Code Online (Sandbox Code Playgroud)

python multithreading udp twisted

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

Grails安装

我试图从源代码安装Grails.我3天前开始,但仍有一些问题.每次尝试都以消息结束:

:grails-bootstrap:compileGroovy
[ant:groovyc] >>> a serious error occurred: grails/util/BuildSettings
[ant:groovyc] >>> stacktrace:
[ant:groovyc] java.lang.NoClassDefFoundError: grails/util/BuildSettings
[ant:groovyc]   at java.lang.Class.getDeclaredMethods0(Native Method)
[ant:groovyc]   at java.lang.Class.privateGetDeclaredMethods(Class.java:2440)
[ant:groovyc]   at java.lang.Class.getDeclaredMethods(Class.java:1806)
Execution failed for task ':grails-bootstrap:compileGroovy'.
> Forked groovyc returned error code: 1
Run Code Online (Sandbox Code Playgroud)

我使用的是Ubuntu 12.04 LTS 64bit

我做了什么:

  1. 安装java

    java版"1.7.0-ea"
    Java(TM)SE运行时环境(版本1.7.0-ea-b76)
    Java HotSpot(TM)64位服务器VM(版本17.0-b05,混合模式)

  2. 安装groovy

    Groovy版本:2.0.0 JVM:1.7.0-ea供应商:Sun Microsystems Inc.操作系统:Linux

  3. 克隆grails并将其签出到v2.1.0

  4. 调用sudo ./gradlew install

如果我使用--stacktrace --info --debug

00:15:19.777 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
00:15:19.779 [ERROR] [org.gradle.BuildExceptionReporter] 
00:15:19.780 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
00:15:19.781 [ERROR] …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu grails groovy

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

有没有办法显示/列出具有特定标签的所有behat场景?

我有Behat用于BDD测试的Symfony2项目.

大多数测试都有标记,例如:

  @database @user_management @admin
  Scenario: Attempt .....
  ....
  ....

  @product @admin
  Scenario: Login ....
  ....
  ....
Run Code Online (Sandbox Code Playgroud)

在运行整个测试套件之前,我希望能够列出所有标记有特定标签的scenerios.可能吗?
我的意思是我可以编写分析所有功能文件的小脚本,但我希望有一些魔术开关/标志,已经实现,但没有记录,这就是我需要的.

symfony behat

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