在提交表单

时间:2017-06-18 19:59:31

标签: javascript php jquery forms symfony

这是我向社区提出的第一个问题,但我一直在阅读你们的很多帖子,他们帮助了我很多! :)

我已经学习了几个月的PHP,我遇到了一个无法解决的问题。即使我认为我找到了冲突的根源,我仍感到有些失落。

在添加JQuery之前,一切正常。 当我添加JQuery:时,我的表单告诉我是否有空字段(它检查必需的字段)但按钮不再起作用,因此数据永远不会被发送并持久存储到数据库中。

我使用JQuery在以前的项目中自定义表单,一切正常。

我的表单代码(由终端上的crud命令生成),没有Jquery。

{{ form_start(form) }}
    {{ form_widget(form) }}
    <input type="submit" value="Create" />
{{ form_end(form) }}

我的JS块

{% block javascripts %}

<script src="{{ asset('Design/js/jquery-3.2.1.min.js') }}"></script>
<script type="text/javascript" src="{{ asset ('Design/js/materialize.min.js') }}"></script>
<script src="{{ asset('Design/js/globalscript.js') }}"></script>
{% endblock %}

也许我做错了,因为在以前的项目中它运作良好。但我是新手编码,我不知道在哪里看。我找不到能够启发我的话题,所以我要求你提供一些建议!

更新控制器:

/**
 * Creates a new song entity.
 *
 * @Route("/new", name="music_song_new")
 * @Method({"GET", "POST"})
 */
public function newAction(Request $request)
{
    $song = new Song();
    $form = $this->createForm('WeSoundBundle\Form\Music\SongType', $song);
    $form->handleRequest($request);

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

        $em = $this->getDoctrine()->getManager();
        $playerEditor = $this->get('app.player_editor');
        $song->setSongUrl($playerEditor->getYoutubeId($song->getSongPlayer()));
        $em->persist($song);
        $em->flush();

        return $this->redirectToRoute('music_song_show', array('id' => $song->getId()));
    }

    return $this->render('music/song/new.html.twig', array(
        'song' => $song,
        'form' => $form->createView(),
    ));
}

我的表单类型:

namespace WeSoundBundle\Form\Music;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class SongType extends AbstractType
{
/**
 * {@inheritdoc}
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('songTitle')->add('songArtist')->add('album')->add('songPlayer')->add('songLyrics')->add('songPopularity');
}
    /**
 * {@inheritdoc}
 */
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'WeSoundBundle\Entity\Music\Song'
    ));
}

/**
 * {@inheritdoc}
 */
public function getBlockPrefix()
{
    return 'wesoundbundle_music_song';
}
}

谢谢,

YD

0 个答案:

没有答案