小编Mat*_*der的帖子

Symfony2:如何从Doctrine ArrayCollection中删除元素(多对多关系)?

我在symfony2(doctrine)中使用以下代码作为我的多对多关系

实体:

/**
 * @ORM\ManyToMany(targetEntity="BizTV\ContainerManagementBundle\Entity\Container", inversedBy="videosToSync")
 * @ORM\JoinTable(name="syncSchema")
 */
private $syncSchema;

public function __construct()
{
    $this->syncSchema = new \Doctrine\Common\Collections\ArrayCollection(); 
}

public function addSyncSchema(\BizTV\ContainerManagementBundle\Entity\Container $syncSchema)
{
    $this->syncSchema[] = $syncSchema;
}
Run Code Online (Sandbox Code Playgroud)

控制器:

$entity->addSyncSchema($container);
$em->flush();
Run Code Online (Sandbox Code Playgroud)

现在,我该如何使用它来删除关系?我是否需要向我的实体添加方法,如removeSyncSchema()?那会是什么样的?

php database doctrine arraycollection symfony

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

setTimeout()会影响性能

我想知道这段代码是否会在客户端上加载,因为超时时间太长了?

        //and update this again in a bit
        setTimeout(function() {
            updateWeather(lat,lng);
        }, 60000);
Run Code Online (Sandbox Code Playgroud)

javascript

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

如何在symfony2服务中执行$ this-> render()?

我在正常的symfony2控制器中有这个代码:

            $temp = $this->render('BizTVArchiveBundle:ContentTemplate:'.$content[$i]['template'].'/view.html.twig', array(
                'c'=> $content[$i],
                'ordernumber' => 1,
            ));
Run Code Online (Sandbox Code Playgroud)

它工作正常.

现在我试图将其移动到服务,但我不知道如何访问相当于普通控制器的$ this.

我尝试像这样注入容器:

    $systemContainer = $this->container;

    $temp = $systemContainer->render('BizTVArchiveBundle:ContentTemplate:'.$content[$i]['template'].'/view.html.twig', array(
                'c'=> $content[$i],
                'ordernumber' => 1,
            ));
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我猜这是因为渲染不是真正使用普通控制器的$ this->容器,而只使用$ this部分.

任何人都知道如何从服务中使用$ this-> render()?

php symfony

9
推荐指数
2
解决办法
9918
查看次数

Ubuntu上Chrome缓存的路径是什么?

我希望能够通过命令行清除缓存(浏览器自己的缓存和可能的脱机缓存清单).

linux ubuntu caching google-chrome

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

事务和symfony2实体管理器

有没有办法在symfony2中使用实体管理器(doctrine)手动指定事务,或者可能是在单个事务中完成我自己在下面做两个事务的自然方式?

// creating screen object...
//Creating user object...

        //flush the screen into database in order to get the Id to relate the server (user) to
        $em->persist($screen);
        $em->flush();

        //Get id of just inserted screen and attach that to new server (user)
        $tempRecordId = $screen->getId();
        $tempEntity = $em->getRepository('BizTVContainerManagementBundle:Container')->find($tempRecordId);
        $entity->setScreen($tempEntity);

        //Flush the user also into database
        $em->persist($entity);
        $em->flush();
Run Code Online (Sandbox Code Playgroud)

请参阅我必须刷新我的第一个实体以获取它的ID,所以我可以将我的第二个实体与我的第一个实体相关联......

database doctrine sqltransaction symfony

8
推荐指数
2
解决办法
7086
查看次数

symfony2如何向用户名添加验证规则?

由于我正在扩展BaseUser,我的用户实体中没有属性$ name,如何向其添加验证,我可以向该实体添加属性$ username吗?是否会混淆或覆盖某些功能或验证或本机提供给用户类的?

我解决了这个问题FOSUserBundle - 验证用户名,密码或电子邮件字段,但因为我使用了一堆对我不起作用的注释验证.

后续问题 - 我在fosUSerBundle XML文件中看到用于验证用户本身是一个使用截取用户名的检查器,我没有得到该功能,如果我尝试添加,我会直接看到SQL错误消息与现有用户同名的用户.这是因为我使用注释会一起覆盖XML验证文件吗?

use BizTV\UserBundle\Validator\Constraints as BizTVAssert;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;


use FOS\UserBundle\Model\User as BaseUser;

use Doctrine\ORM\Mapping as ORM;

use BizTV\BackendBundle\Entity\company as company;


class User extends BaseUser implements AdvancedUserInterface
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;  

//TODO: Add regex on $name for a-z, A-Z, 0-9 and _ (underscore) 
//TODO: Add constraint on $name    * @BizTVAssert\NameExists    (and finish coding this constraint)

    /**
    * @var object BizTV\BackendBundle\Entity\company
    *  
    * …
Run Code Online (Sandbox Code Playgroud)

validation username symfony fosuserbundle

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

symfony2文件在表单错误时丢失

我正在使用与doctrine相关的文件上传的标准实现,根据symfony2网站教程中的示例.

当我的上传表单在验证中遇到错误,并将用户返回到带有错误消息的表单时,它会丢失选择上传的文件,但如果我var_dump我的$ entity-> file我可以看到它有文件.. .

    //if form is valid, do some stuff... if not:
    else {

        //var_dump($entity->file); //This works, I get my file
        //die;

        //Get and check the folder chosen as parent
        $entity->setFolder( $this->checkFolderId($request->request->get('folder')) ); //will cause die() if folder doesn't belong to this company

        $folders = $this->getFolders();

        return $this->render('BizTVMediaManagementBundle:Image:new.html.twig', array(
            'entity' => $entity,
            'form'   => $form->createView(),
            'folders' => $folders,
            'fileExists' => $fileExists,
        ));

    }
Run Code Online (Sandbox Code Playgroud)

在将其放入树枝视图后,文件字段中没有任何内容.

这是我的实体......

<?php

namespace BizTV\MediaManagementBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * …
Run Code Online (Sandbox Code Playgroud)

validation upload doctrine file symfony

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

如何使用symfony2"手动"处理文件上传?

因为我有一个自定义构建的jQuery插件来将文件上传传递给我的symfony2 webapp,我正在寻找在控制器中处理这个上传的方法.

我目前拥有的标准(非ajax)文件上传(并且适用于同步调用)看起来像这样

控制器摘录

    ...

    $entity  = new Image();
    $request = $this->getRequest();
    $form    = $this->createForm(new ImageType($createAction), $entity);
    $form->bind($request); // <-- Find a way to make this connection manually?!

    //check that a file was chosen
    $fileExists = isset($entity->file);

    if ( ($form->isValid()) && ($fileExists) ) {

        $em = $this->getDoctrine()->getManager();

        $em->persist($entity);
        $em->flush();

    }

    ...
Run Code Online (Sandbox Code Playgroud)

表单类型:表单只接受文件和名称:

class ImageType extends AbstractType
{

    ...

    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $createAction = $this->createAction;

        if ($createAction) {        
            $builder
                ->add('file')
            ;
        }

        $builder
            ->add('name', 'text', array('label' …
Run Code Online (Sandbox Code Playgroud)

php forms jquery file-upload symfony

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

如何获得最新的mySQLdump工具

也许不是一个合适的SO问题,但我会试一试.

当我尝试从远程服务器转储我的数据库时,我的MacOS MySQL工作台告诉我:

Applications/MySQLWorkbench.app/Contents/MacOS/mysqldump是版本5.7.12,但要转储的MySQL服务器版本为5.7.15.由于mysqldump的版本比服务器旧,因此某些功能可能无法正确备份.建议您将本地MySQL客户端程序(包括mysqldump)升级到等于或高于目标服务器的版本.然后必须在首选项 - >管理员 - > mysqldump工具的路径中设置转储工具的路径:

我安装了6.3版,内置的"检查更新"只告诉我我已经有了最新版本.

有谁知道我可以去哪里下载这个更新的转储工具?我在MySQL.com上环顾四周但却找不到它.

mysql dump

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

Symfony2 FOSUserBundle - 在登录时验证"用户活动"标志

我的用户标记为'active',如果设置为零或null,我将不允许登录.

我已经尝试了几种方法并且做得很短.

如果我执行注销路由,则不会保留Flash消息,因此用户什么也看不到.

我考虑在登录表单上添加验证,以便在标志未设置为true时抛出正常的表单错误,但在该文件夹(vendor/Bundles/FOS/UserBundle/Form/Type)中我找不到任何登录信息形式,只有注册等,所以我不知道在哪里放或继承从哪里来覆盖.

我也按照这里的建议尝试手动注销,但这给我留下了死亡的白屏......

有什么建议如何轻松完成这个?

************** UPDATE ************

我意识到我可能想在登录表单上添加验证器.我目前已将其编码到用户被发送到的第一条路线的控制器中,但如果用户在登录前键入路线,则不会提供太多安全性,因为在成功登录尝试后,我的默认"登陆页面"之后登录将不是用户被带到的路线,但他将登陆他选择的路线...

***再次更新****

所以服务配置文件有这个......

    <service id="security.user_checker" class="%security.user_checker.class%" public="false" />
Run Code Online (Sandbox Code Playgroud)

这个参数在这里定义......

    <parameter key="security.user_checker.class">Symfony\Component\Security\Core\User\UserChecker</parameter>
Run Code Online (Sandbox Code Playgroud)

所以为了修改我需要覆盖的登录逻辑

Symfony\Component\Security\Core\User\UserChecker
Run Code Online (Sandbox Code Playgroud)

现在我通过覆盖symfony app/config中我自己的parameters.ini上面的参数来完成这个

security.user_checker.class  = BizTV\UserBundle\Controller\UserChecker
Run Code Online (Sandbox Code Playgroud)

..并将此检查添加到我的userChecker overrider ...

    //Test for companylock...
    if ( !$user->getCompany()->getActive() ) {
        throw new LockedException('The company of this user is locked.', $user);
    }
Run Code Online (Sandbox Code Playgroud)

这是整个文件:

<?php

/*
 * This file is part of the Symfony package.
 * …
Run Code Online (Sandbox Code Playgroud)

forms flash logout symfony fosuserbundle

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