小编Mil*_*loš的帖子

Symfony2和Doctrine2:使用两个实体填充表单(一个复杂的场景)

我有5个实体:

  • 用户,
  • 人,
  • UserAffiliation,
  • PersonAffiliation和
  • 联系

这是架构:

在此输入图像描述

一些细节:

  • WebUser是在网站上注册的人员.对于每个Webuser,都有一个人员ID.

  • 一个人可以是网络用户,作者等.

  • 每个WebUser都有0个或更多个从属关系.这些隶属关系是由这个WebUser创建的,并在能干的UserAffiliations中链接.

  • Web用户还可以将他创建的从属关系链接到一个人(如果该人是作者),并且将填充实体人员关系.

我现在正试图让webuser为作者(人)分配一个联盟.为此,我有:

  • 在实体人员中

    @ORM\OneToMany(targetEntity="PersonAffiliation", mappedBy="person", cascade={"persist", "remove"})
    
    protected $affiliations;
    
    Run Code Online (Sandbox Code Playgroud)
  • 在PersonAffiliation中

    @ORM\ManyToOne(targetEntity="Person", inversedBy="affiliations")
    @ORM\JoinColumn(name="person_id", referencedColumnName="id")
    
    protected $person;
    
    @ORM\ManyToOne(targetEntity="Affiliation", inversedBy="person_affiliations")
    @ORM\JoinColumn(name="affiliation_id", referencedColumnName="id")
    
    protected $affiliation;
    
    Run Code Online (Sandbox Code Playgroud)
  • 在实体用户中:

    @ORM\OneToMany(targetEntity="UserAffiliation", mappedBy="user")
    
    protected $affiliations;
    
    
    @ORM\ManyToOne(targetEntity="Person")
    @ORM\JoinColumn(name="person_id", referencedColumnName="id")
    
    protected $person;
    
    Run Code Online (Sandbox Code Playgroud)
  • 在Entity UserAffiliation中

    @ORM\ManyToOne(targetEntity="User", inversedBy="affiliations")
    @ORM\JoinColumn(name="user_id", referencedColumnName="id")
    
    protected $user;
    
    
    @ORM\ManyToOne(targetEntity="Affiliation", inversedBy="user_affiliations")
    @ORM\JoinColumn(name="affiliation_id", referencedColumnName="id")
    
     protected $affiliation;
    
    Run Code Online (Sandbox Code Playgroud)

在表单中,我正在做下一个:

$builder->add('affiliations', 'entity', array(
            'class' => 'SciForumVersion2Bundle:PersonAffiliation',
            'query_builder' => function($em) use ($person){
            return $em->createQueryBuilder('pa')->where('pa.person_id = :id')->setParameter('id', $person->getId());
        },
            'property'    => 'affiliation',
            'multiple' => …
Run Code Online (Sandbox Code Playgroud)

php entity symfony-forms symfony doctrine-orm

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

Android ListView和OnClickListener:如何获取所选项目

我有一个listView vith一些项目.

我想从我的onClickListener获取所选项的名称(String).

我知道如何获得所选位置,但如何找到这个元素的字符串?

这是我的点击监听器:

journalNames.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
    {

    }});
Run Code Online (Sandbox Code Playgroud)

我的listView中填充了一些来自数据库的查询.

谢谢.

android android-listview

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

Symfony2 - 如何清除/编辑Flash消息

我在渲染树枝模板时在控制器中设置了一条flash消息.如果有帖子操作,我想重定向到同一页面,但更改Flash消息.

if ($request->isMethod('POST')) {
    ...
    ...

    $this->get('session')->getFlashBag()->clear(); // Does not work
    $this->get('session')->getFlashBag()->all();   // Does not work

    $request->getSession()->getFlashBag()->set('user-notice', $flash_message2);

    return $this->redirect($request->headers->get('referer'));
}


$this->get('session')->getFlashBag()->set('user-notice', $flash_message1);

return $this->render(....
Run Code Online (Sandbox Code Playgroud)

但问题是显示的flash消息是$ flash_message1,应该是$ flash_message2.

当尝试使用add而不是set时,我可以看到它们.我试图使用Symfony2 clear()all()函数:http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Session/Flash/FlashBagInterface.html 但没有任何改变.

任何的想法?谢谢 !!!

php controller symfony twig flash-message

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

Symfony2 - 如何验证上传的文件是否是tex文件(LaTex)

我在Symfony2项目中有一个文件上传功能,我想验证上传的文件是.tex文件格式=> LaTex文件.对于text/html,我正在使用:

$metadata->addPropertyConstraint('file', new Assert\File(array(
            'maxSize' => '100000k',
            'mimeTypes' => array("text/html"),
            'mimeTypesMessage' => 'Please upload a valid HTM/HTML File',
    )));
Run Code Online (Sandbox Code Playgroud)

我在尝试:

 $metadata->addPropertyConstraint('file', new Assert\File(array(
            'maxSize' => '100000k',
            'mimeTypes' => array(
                   'text/html',
                    'application/x-tex',
                    'application/x-latex'
             ),
            'mimeTypesMessage' => 'Please upload a valid HTM/HTML/TEX File',
    )));
Run Code Online (Sandbox Code Playgroud)

但是当我上传.tex文件时,我收到的消息是:

Please upload a valid HTM/HTML/TEX File.
Run Code Online (Sandbox Code Playgroud)

我怎么能在这里添加Tex文件?谢谢.

php validation latex symfony mime-types

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

Javascript和正则表达式:删除字符串中最后一个单词后的空格

我有一个这样的字符串:

var str = 'aaaaaa, bbbbbb, ccccc, ddddddd, eeeeee ';
Run Code Online (Sandbox Code Playgroud)

[space]是一个真实的空间,而不是一个字符串,但我不知道如何展示它.

我的目标是删除字符串中的最后一个空格.我可以用

str.split(0,1);
Run Code Online (Sandbox Code Playgroud)

但是如果最后一个字符串后面没有空格,这将减少字符串的最后一个字符.

我想用

str.replace("regex",'');
Run Code Online (Sandbox Code Playgroud)

如果你能帮助我,我是正则表达式的初学者.

非常感谢你.

javascript regex

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

Android Google Cloud Messaging(GCM)和不匹配的发件人ID

我想在我的Android应用程序中使用GCM服务.

为此,我使用了http://developer.android.com/guide/google/gcm/gcm.html上的android文档

我创建了客户端注册过程与发件人ID等和服务器端应用程序,我使用注册ID和发件人ID发送邮件.

当我通过Eclipse在我的手机中安装应用程序时,推送通知工作正常,所以发件人ID我是正确的.

然后,当我用Eclipse导出apk文件并将其安装在我的手机中时,我收到SenderId错误的错误消息

MissmatchedSenderId
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么我会得到这个.

我已经阅读了这些主题:

为什么我从GCM服务器端获得"MismatchSenderId"?

使用GCM发送消息时,我不断收到响应'MismatchSenderId'

但在我的情况下奇怪的是,在将应用程序导出为apk之前一切正常,然后我遇到了这个问题.

任何想法都是最好的.

android google-cloud-messaging

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

Symfony2表单:如何在同一视图中两次呈现相同的元素

我有一个控制器,我在其中创建一个表单,其中包含两个下拉列表.

当我渲染我的视图时,我希望在页面的顶部和底部具有相同的表单元素.问题是表单elemet(下拉列表)仅显示在页面顶部,即使我要求twig将它们也放在底部.

这是我想要的:

在此输入图像描述

1和2是下拉列表.我想在页面的顶部和底部复制它.

关于如何做到这一点的任何想法?

顶部内容和底部内容(两个下拉列表位于其中)位于单个sseparate twig文件(searchPanel.html.twig)中,此文件包含在页面中

{% include "MyBundle:Search:searchPanel.html.twig" %}
Run Code Online (Sandbox Code Playgroud)

这是searchPanel.html.twig

<div class="searchPanel">

<form action="{{ path }}" method="POST" {{ form_enctype(form) }}>
    Papers per page
    {{ form_widget(form.papers_per_page, { 'class': 'ppp'}) }}

    / Sort by 
    {{ form_widget(form.sort_by, { 'class': 'sort'}) }}
    {{ form_rest(form) }}

    / Papers ({{ papers_number }} results)

 <input type="submit" class="updateSearchResults" value="Update"></input>
</form>
Run Code Online (Sandbox Code Playgroud)

php symfony twig

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

使用html5和CANCEL按钮进行Symfony2表单验证

我在Symfony2上有一个联系表单,我把一些验证器作为电子邮件,minLength等.所有这些字段也设置为notBlank.

因此,HTML5也验证了这些字段(对于电子邮件而非空白),这对我来说很好.

我有一个提交按钮:

<input type="submit" value="Submit"/>
Run Code Online (Sandbox Code Playgroud)

问题是我有另一个提交按钮,它是一个取消按钮:

<input name="cancel" type="submit" value="Cancel" />
Run Code Online (Sandbox Code Playgroud)

使用此按钮,在我的控制器中,我正在进行重定向:

if( $request->get('cancel') == 'Cancel' )
    return  $this->redirect($this->generateUrl('SciForumVersion2Bundle_homepage'));
Run Code Online (Sandbox Code Playgroud)

现在,由于HTML5验证,我无法重定向,因为例如字段为空.

为了重新解决这个问题,我找到了两个解决方案,但我不喜欢它们:

  1. 禁用HTML 5验证:

    <form novalidate>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用JavaScript

但正如我所说,我不喜欢这些方法,我相信有一些很好的Symfony方法可以解决这个问题.

任何的想法?非常感谢你.

validation html5 symfony twig

7
推荐指数
3
解决办法
8077
查看次数

Symfony2和Doctrine - 未定义的索引

我有一个Symfony 2.4.x项目.

在那里,我有两个映射在一起的实体:会议和论文.

每个会议都有论文和特定会议,我想获得论文数量.

为此,在我的会议实体中,我有:

/**
 * @ORM\OneToMany(targetEntity="Paper", mappedBy="conference")
 */
protected $papers;
Run Code Online (Sandbox Code Playgroud)

在实体论文中我有:

/**
 * @ORM\ManyToOne(targetEntity="Conference", inversedBy="papers")
 * @ORM\JoinColumn(name="conference_id", referencedColumnName="id")
 */
protected $conference;
Run Code Online (Sandbox Code Playgroud)

当我在Symfony2.0上有这个项目时,一切都运行良好,但现在我在Symfony 2.4.x中迁移它,我在尝试时遇到以下错误:

count($conf->getPapers()); // In the controller
{{ conf.papers | length }} // In the twig template
Run Code Online (Sandbox Code Playgroud)

错误:

ContextErrorException: Notice: Undefined index: hash_key in /var/www/git/conference2.0-v2.4/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php line 121
Run Code Online (Sandbox Code Playgroud)

编辑:以下是pastebin中两个实体的完整类:

编辑2:这是我通过尝试解决问题找到的一些消息.另有一个classe参与其中:提交.

这是代码:http://pastebin.com/bkdRtjdq

在Submission类中,我有主键是hash_key而不是id.

php entity symfony doctrine-orm twig

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

慢MySQL查询 - 缓存PHP数组中的数据?

我需要使用PHP从MySQL DB中选择一些数据.它可以在一个单独的MySQL查询中完成,在一个好的服务器上运行需要5分钟(在具有超过10 Mio行的表上有多个JOIN).

我想知道在PHP中拆分查询并使用一些循环而不是MySQL是否是更好的做法.此外,最好从一个表中查询数据中150,000行的所有电子邮件,然后检查数组而不是执行数千个MySQL SELECT.

这是查询:

SELECT count(contacted_emails.id), contacted_emails.email 
FROM contacted_emails
LEFT OUTER JOIN blacklist ON contacted_emails.email = blacklist.email
LEFT OUTER JOIN submission_authors ON contacted_emails.email = submission_authors.email
LEFT OUTER JOIN users ON contacted_emails.email = users.email
GROUP BY contacted_emails.email
HAVING count(contacted_emails.id) > 3
Run Code Online (Sandbox Code Playgroud)

EXPLAIN返回: 说明

4个表中的索引是:

contacted_emails: id, blacklist_section_id, journal_id and mail
blacklist: id, email and name
submission_authors: id, hash_key and email
users: id, email, firstname, lastname, editor_id, title_id, country_id, workplace_id
Run Code Online (Sandbox Code Playgroud)

jobtype_id

contact_emails表创建如下:

CREATE TABLE contacted_emails ( 
  id int(10) unsigned NOT NULL …
Run Code Online (Sandbox Code Playgroud)

php mysql arrays

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