forms - Symfony2 使用模型中的数据预填充表单?

标签 forms symfony

我的 ProfileType 如下:

namespace Site\UserBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class ProfileType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {       
        $builder->add('facebook', 'text', array('required'=>false))
            ->add('myspace', 'text', array('required'=>false))
            ->add('twitter', 'text', array('required'=>false))
            ->add('soundcloud', 'text', array('required'=>false))
            ->add('youtube', 'text', array('required'=>false))
            ->add('website', 'text', array('required'=>false))
            ->add('bio', 'textarea', array('required'=>false));
    }

    public function getName()
    {
        return 'profile';
    }
}

我想用数据库中已有的数据预先填充表单字段,以便它在表单中可见。

我的 Controller :

namespace Site\UserBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpFoundation\Request;
use Site\UserBundle\Entity\Profile;
use Site\UserBundle\Form\Type\ProfileType;

class ProfileController extends Controller
{
    public function editAction()
    {           
        $em = $this->getDoctrine()->getEntityManager();
        $editprofile = $em->getRepository('SiteUserBundle:Profile')->findOneByUser($user = $this->get('security.context')->getToken()->getUser()->getId());

        $form = $this->createForm(new ProfileType(), $editprofile);

        $form->bindRequest($this->getRequest());
            if ($form->isValid()) {
                $editprofile->setUpdated(new \DateTime("now"));
                $em->flush();

                return $this->redirect($this->generateUrl('SiteUserBundle_login'));
            }

        return $this->render(
            'SiteUserBundle:Default:editprofile.html.twig', 
            array('form' => $form->createView())
        );
    }
}

有什么想法吗?我认为这种方式更新用户个人资料会更容易。

最佳答案

替换

findOneByUser($id)

find($id)

还尝试将 $id 作为 slug 从 url 传递到您的 Action。网址:example.com/page/id

sampleAction($id){}

关于forms - Symfony2 使用模型中的数据预填充表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7428379/

相关文章:

javascript - thymeleaf::使用服务中的数据填充表单

HTML 表单的 javascript 验证

javascript 将数组项添加到表单值

javascript - 如果选项值存在则禁用选择输入

zend-framework - Symfony DIC 和家长服务不工作

html - 如何在表单中查找重复的 ID?

symfony - 在 Twig 内使用 Typeahead 模板

symfony - 清除缓存会删除 web/bundles/app 文件夹

javascript - for twig.js 内的循环,设置循环计数器

php - MongoDB::listCollections 不工作