Symfony TextField Ajax用户

乔治·伊里米奇科(George Irimiciuc)

我有一个消息实体和一个用户实体。我想让用户能够向其他人发送消息。我已经可以发送和接收消息了,一切正常,但是为了选择消息的接收者,对所有用户进行了默认下拉菜单。

我想要做的是将下拉列表更改为文本字段,并对数据库进行AJAX,并检索与在文本字段中插入的关键字匹配的用户列表。当单击其中之一时,将在文本字段中介绍用户。

我面临的问题是我不知道如何传递实体而不是纯文本,因为我收到此错误

Argument 1 passed to PrivateMessageBundle\Entity\Message::setReceiver() must be an instance of CrudBundle\Entity\User, string given

另一个问题是,是否有一个捆绑包或插件可以使此操作更容易并且我可以进行修改?还是我必须在每个ajax字段中每次都要自己做?

我正在建立这样的形式

$builder
    ->add('title')
    ->add('content','textarea')
    ->add('receiver','text');

默认情况下,receiver是一个下拉选择,它会自动选择User实体,但是一旦将其更改为文本,它就不会选择。

如果需要,这也是我实体的相关部分:

class Message
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=50)
     */
    protected $title;

    /**
     * @ORM\ManyToOne(targetEntity="CrudBundle\Entity\User")
     * @ORM\JoinColumn(referencedColumnName="id")
     */
    protected $receiver;
    /**
     * @ORM\ManyToOne(targetEntity="CrudBundle\Entity\User")
     * @ORM\JoinColumn(referencedColumnName="id")
     */
    protected $sender;

    /**
     * @var string
     *
     * @ORM\Column(name="content", type="string", length=2000)
     */
    protected $content;

还有我的User类,扩展了FOSUserBundle的BaseUser类。

class User extends BaseUser implements AuthorInterface
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
弗兰克·B

我认为有两种方法可以解决此问题。

1)添加一个带有被映射的= FALSE属性的custum表单域。

->add('ajaxsearch', null, array('mapped' => false))

2)使用数据转换器

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章