小编Mic*_*ick的帖子

Doctrine不会更新简单的数组类型字段

短篇小说(编辑)

可以存储数组而不是映射的关联.在Symfony2中,使用集合字段类型相当容易.例如,使用此技术,您可以存储填充数组事件字段的文本字段数组.然而,为了更新数组,有一个技巧,这个技巧由@Vadim Ashikhman在接受的答案中精美地解释.

很长的故事

有时,存储数组而不是映射关联是有用且更有效的.但是,一旦创建,如果该数组的大小没有改变,更新此数组仍然很复杂?

许多人都有类似的问题,但没有人找到解决这个问题的正确方法.

存储一个数组

团队可以组织许多活动.这些事件只是使用Doctrine而不是使用OneToMany关联存储在数组中.因此,实体事件不与Doctrine映射.

实体事件(未与Doctrine映射)

<?php

namespace Acme\TestBundle\Entity;

...

class Event
{

    /**
     * @Assert\NotBlank
     */
    private $name;

    public function setName($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }


}
Run Code Online (Sandbox Code Playgroud)

实体团队

<?php

namespace Acme\TestBundle\Entity;

...

/**
 * @ORM\Entity()
 * @ORM\HasLifecycleCallbacks
 * @ORM\Table(name="teams")  
 */
class Team 
{

/**
     * @ORM\Column(type="array")
     * @var array
     */
    protected $events;


    public function addEvent($event)
    {
        if (!in_array($event, $this->events, true)) {
            $this->events[] = $event;
        }

        return …
Run Code Online (Sandbox Code Playgroud)

php doctrine symfony-forms symfony doctrine-orm

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

WKWebView未加载网址

WKWebview没有加载某些网址.这是我的代码片段

let myURL = URL(string: "https://contents.tdscpc.gov.in/")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
Run Code Online (Sandbox Code Playgroud)

当我改变网址说它URL(string: "https://www.ndtv.com/")有效.不知道为什么?任何建议都会非常有帮助.

macos ios swift wkwebview

13
推荐指数
2
解决办法
8892
查看次数

在Symfony2中流式传输响应

我在doc中尝试这个例子:在Symfony2中流式传输一个响应.

/**
 * @param Request $request
 * @return Response $render
 * @Route("/streamedResponse", name="streamed_response")
 * @Template("AcmeTestBundle::streamedResponse.html.twig")
 */
public function streamedResponseAction(Request $request)
{
    $response = new StreamedResponse();
    $response->setCallback(function () {
        echo 'Hello World';
        flush();
        sleep(3);
        echo 'Hello World';
        flush();
    });

    return $response;

}
Run Code Online (Sandbox Code Playgroud)

这会同时输出所有内容.我做错了什么吗?

symfony symfony-2.1

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

Dagger可以用来在内容提供商上执行注入吗?

我最近一直在将Dagger集成到一个使用ContentProviders的项目中.我在自定义Application对象中创建了一个ObjectGraph实例,基本上在每个托管组件中:

  • 活动,
  • 分段,
  • 服务

...然后,我调用getApplication(),向下转换到我的自定义Application对象,并通过我的Application类中的一些自定义实现强制注入.这似乎是根据我在Square看到的人发布的样本进行注射的规定方法.

这种模式不适用于ContentProvider实例,因为它们的生命周期与Application对象的生命周期没有预期的关联,即ContentProviders可以,并且正如我经常观察的那样,是在创建Application对象之前创建的(对于我尚未理解的原因).

所以...有没有人有一个使用Dagger注入ContentProviders的好方法?到目前为止,我已经通过isInjected()在每个ContentProvider的接口方法(插入,查询,更新,删除)的开头调用...基本上是一种懒惰的初始化形式.但这似乎远非理想.是否有更规定的方法来注入ContentProviders?

android dagger

12
推荐指数
1
解决办法
1701
查看次数

Symfony如何返回所有登录的活动用户

我想返回我的应用程序的所有登录用户并在我的仪表板中呈现它.在user_iduser_name应该从会话中检索(我使用的是外部LDAP库进行验证)

我在数据库中创建了一个字段,该字段lastActivity将包含上次登录时间,然后我可以在数据库中查询lastActivity 最近2分钟内登录的显示用户.

ActivityListener.php

     <?php

namespace Bnpp\SecurityBundle\EventListener;

use Doctrine\ORM\EntityManager;
//use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\HttpKernel\HttpKernel;
use Acme\SecurityBundle\Entity\User;
use Doctrine\Bundle\DoctrineBundle\Registry;


/**
 * Listener that updates the last activity of the authenticated user
 */

class ActivityListener

    {
    protected $securityContext;
    protected $entityManager;

    public function __construct(SecurityContext $securityContext, EntityManager $entityManager)
    {
        $this->securityContext = $securityContext;
        $this->entityManager = $entityManager;
    }



    /**
     * Update the user "lastActivity" on each request
     * @param FilterControllerEvent $event
     */


    public function …
Run Code Online (Sandbox Code Playgroud)

php doctrine symfony symfony-2.3

11
推荐指数
2
解决办法
9968
查看次数

请参阅PHPStorm中的继承文档

如果可以,我通常会将文档放在界面中:

interface SenderInterface
{
    /**
     * Sends Email to user
     *
     * @param UserInterface $receiver
     * @param string $msg
     */
    public function sendEmail(UserInterface $receiver, $msg)
    //...
    {
Run Code Online (Sandbox Code Playgroud)

然后我继承了这样的doc以避免冗余.

class Sender implements SenderInterface
{
    /**
     * {@inheritDoc}
     */
    public function sendEmail(UserInterface $receiver, $msg)
    //...
    {
Run Code Online (Sandbox Code Playgroud)

有没有办法直接看到继承的文档,Sender class而无需SenderInterface在PHPStorm中打开?

ide phpstorm

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

doctrine Entity Manager的getReference()

情况:

我想使用doctrine2 Entity Manager 的getReference()函数.但是,在我要求从数据库中删除对象的情况下,如果我多次请求同一个对象,我会获得一个代理.

一个例子:

//A random article object...that has been deleted from the database
$articleClass = 'Acme\ArticleBundle\Entity\Article';
$articleIdentifiers = array('id'=>1);
$i = 0;

//We ask for its reference twice
do{
    try {
        echo "a";
        $subject = $this->em->getReference(
            $subjectClass,
            $subjectIdentifiers
        );
       //call this object now
       var_dump($subject);

    } catch (\Exception $e) {
        echo "b";
    }
    $i++;
} while ($i <2);
Run Code Online (Sandbox Code Playgroud)

输出:

a
b
a
object(Proxies\__CG__\Acme\ArticleBundle\Entity\Article)
Run Code Online (Sandbox Code Playgroud)

如何获取数据库中甚至不存在的对象的代理?如果我评论这一行,实体管理器不管理对象,我获得输出abab,这对我来说更有意义,因为我不想获得数据库中不存在的代理对象.对于info,返回的代理对象具有其所有属性null.因此,我获得了数据库中不存在的对象的代理.所以,如果我要求这个对象,我会得到一个"未找到实体"异常.

挑战

任何人都可以对此有任何意义吗?有没有办法依靠getReference()告诉我们这个对象是否确实存在于数据库中?

doctrine symfony doctrine-orm

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

将图片存储在cookie中

我想在浏览器中存储我的用户的小图片,以便他们每次登录时都可以看到他们的个人资料图片(在登录表单中)(例如他们记住我时).我认为hotmail正在做类似的事情.

是否可以将图像存储在用户计算机上并将路径存储在cookie中?似乎cookie的最大大小为4096字节,因此可能很难将图像本身存储在cookie中.你有什么想法我能做到吗?

html

9
推荐指数
4
解决办法
8657
查看次数

在Symfony2控制器中处理Ajax中的错误

我正在尝试处理Ajax中的错误.为此,我只是想在Symfony中重现这个SO问题.

$.ajaxSetup({
    error: function(xhr){
        alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText);
    }
});
Run Code Online (Sandbox Code Playgroud)

但是我无法弄清楚控制器中的代码在Symfony2中会是什么样子来触发header('HTTP/1.0 419 Custom Error');.例如,是否可以附加个人信息You are not allowed to delete this post.我是否也需要发送JSON响应?

如果有人熟悉这一点,我将非常感谢你的帮助.

非常感谢

symfony symfony-2.1

9
推荐指数
1
解决办法
7852
查看次数

创建表单时使用条件语句

我想在Symfony中创建表单时使用条件语句.

我在一般情况下使用选择小部件.如果用户选择" 其他 " 选项,我想显示一个额外的文本框小部件.我想这可以在javascript中完成,但是我怎样才能将来自2个小部件的数据保存到我的实体中的同一个属性中?

到目前为止我有这个:

  $builder->add('menu', 'choice', array(
        'choices'   => array('Option 1' => 'Option 1', 'Other' => 'Other'),
        'required'  => false,
    ));
  //How to add text box if choice == Other ????
Run Code Online (Sandbox Code Playgroud)

我曾计划使用DataTransfomer,但是在2个小部件上?

symfony-forms symfony-2.1

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