【问题标题】:How to access to a twig form password field value using javascript?如何使用 javascript 访问树枝表单密码字段值?
【发布时间】:2015-02-01 03:42:50
【问题描述】:

我想知道如何使用 javascript 访问树枝表单密码字段值。解释如下:

这是我拥有的 html\twig 代码:

    <html>
    <head>
        <link rel="stylesheet" type="text/css" href="{{asset('bundles/ikprojhome/css2/css11.css')}}"/>
        <script src='{{asset('bundles/ikprojhome/lib/jquery.min.js')}}'></script>
        <script src='{{asset('bundles/ikprojhome/lib/sha512.js')}}'></script>
        <script>
            $(document).ready(function(){
                {% for h in pwd %}
                var pwd = "{{ h.pswd }}";
                {% endfor %}
                $('#update').on('click', function() { 

                    var a = {{ form.vars.value.passWD.first }};
                    alert(a);
                });
            });
        </script>
    </head>
    <body>
        <center>
            <div id="container">
                <div id="header">
                </div>
                <div id="content">
                    <table width="100%" height="100%" align="center">
                        <tr>
                            <td>   
                                <!--<form id="actualpwdform">
                                    <table align="center" width="100%">
                                        <tr>
                                            <td class="separation">
                                                <label>Actuel:</label>
                                            </td>
                                            <td>
                                                <input id="actualpwd" type="text">
                                            </td>
                                        </tr>
                                    </table>
                                </form>-->
                                <form id="pwdform" action="{{path('ikproj_home_passwordchange',{id:id})}}" method="POST" {{ form_enctype(form) }} onsubmit="javascript:parent.jQuery.fancybox.close();">
                                    {{ form_errors(form) }}
                                    <table align="center">
                                        <tr>
                                            <td class="separation">
                                                <label>Actuel:</label>
                                            </td>
                                            <td>
                                                <input id="actualpwd" type="text">
                                            </td>
                                        </tr>
                                        <tr height="20px"></tr>
                                        <tr>
                                            <td class="separation">
                                                <label>Nouveau:</label>
                                            </td>
                                            <td>
                                                {{ form_widget(form.passWD.first) }}
                                            </td>
                                        </tr>
                                        <tr height="20px"></tr>
                                        <tr>
                                            <td class="separation">
                                                <label>Saisir à nouveau:</label>
                                            </td>
                                            <td>
                                                {{ form_widget(form.passWD.second) }}
                                            </td>
                                        </tr>
                                        <tr>
                                            <td colspan="2" align="center" id="button" valign="bottom">
                                                <input class="button" type="submit" value="" id="update"/>
                                            </td>
                                        </tr>
                                    </table>
                                    {{form_widget(form._token)}}
                                </form>
                            </td>
                        </tr>
                    </table> 
                </div>
            </div>
        </center>
    </body>
</html>

这是表单构建器的代码:

    <?php

namespace Ikproj\HomeBundle\Form;

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

class UserpasswordchangeType extends AbstractType
{
     /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('passWD', 'repeated', array(
                    'type' => 'password',
                    'invalid_message' => 'Les mots de passe doivent correspondre',
                    'options' => array('required' => true),
                    'first_options'  => array('label' => null),
                    'second_options' => array('label' => null)));
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Ikproj\HomeBundle\Entity\User'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'ikproj_homebundle_user';
    }
}

这是我正在处理的实体的代码:

    <?php

namespace Ikproj\HomeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity(repositoryClass="Ikproj\HomeBundle\Entity\UserRepository")
 */
class User
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id_user", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

    /**
     * @var string
     *
     * @ORM\Column(name="username", type="string", length=255)
     */
    private $email;

    /**
     * @var string
     *
     * @ORM\Column(name="pseudo", type="string", length=255)
     */
    private $pseudo;

    /**
     * @var string
     *
     * @ORM\Column(name="password", type="string", length=255)
     */
    private $passWD;

    /**
     * @var string
     *
     * @ORM\Column(name="sexeuser", type="string", length=255)
     */
    private $sexeuser;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="dateanniv", type="date")
     */
    private $dateanniv;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name
     *
     * @param string $name
     * @return User
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string 
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set email
     *
     * @param string $email
     * @return User
     */
    public function setEmail($email)
    {
        $this->email = $email;

        return $this;
    }

    /**
     * Get email
     *
     * @return string 
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * Set pseudo
     *
     * @param string $pseudo
     * @return User
     */
    public function setPseudo($pseudo)
    {
        $this->pseudo = $pseudo;

        return $this;
    }

    /**
     * Get pseudo
     *
     * @return string 
     */
    public function getPseudo()
    {
        return $this->pseudo;
    }

    /**
     * Set passWD
     *
     * @param string $passWD
     * @return User
     */
    public function setPassWD($passWD)
    {
        $this->passWD = $passWD;

        return $this;
    }

    /**
     * Get passWD
     *
     * @return string 
     */
    public function getPassWD()
    {
        return $this->passWD;
    }

    /**
     * Set sexeuser
     *
     * @param string $sexeuser
     * @return User
     */
    public function setSexeuser($sexeuser)
    {
        $this->sexeuser = $sexeuser;

        return $this;
    }

    /**
     * Get sexeuser
     *
     * @return string 
     */
    public function getSexeuser()
    {
        return $this->sexeuser;
    }

    /**
     * Set dateanniv
     *
     * @param \DateTime $dateanniv
     * @return User
     */
    public function setDateanniv($dateanniv)
    {
        $this->dateanniv = $dateanniv;

        return $this;
    }

    /**
     * Get dateanniv
     *
     * @return \DateTime 
     */
    public function getDateanniv()
    {
        return $this->dateanniv;
    }
}

问题是我收到以下错误消息:“Impossible to access an attribute ("first") on a string variable ("3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2") in IkprojHomeBundle:configuration:passwordchange.html.twig at line 23

所以,我的问题是:

  1. 我的代码有什么问题?
  2. 如何访问表单中的密码字段值?

【问题讨论】:

    标签: forms symfony passwords field twig


    【解决方案1】:

    最后,我解决了问题!...实际上,在我的 html\twig 代码中,我更改了以下代码部分:

    var a = {{ form.vars.value.passWD.first }};
    

    到这个:

    var a = $('#{{ form.passWD.first.vars.id }}').val();
    

    正如您在此处所注意到的,我使用 jQuery 来访问 twig 表单的密码字段值。

    【讨论】:

      【解决方案2】:

      您似乎已经通过{{ form.vars.value.passWD }} 获取密码值,不需要first 属性。

      您还可以使用 jQuery 访问密码值。检查输入的名称,例如使用 fos 用户包,您需要这样的内容:$('input[name="fos_user_change_password_form[new][first]"]').val()。检查您的 html 源代码以替换 name 的值。

      【讨论】:

      • 好吧,你可以注意到在 html\twig 代码和表单构建器代码中有一个重复的密码字段,因此我使用 firstsecond 属性。顺便说一句,您知道如何使用 jQuery 访问 twig 表单字段值吗? (树枝形式不是 html 形式)
      • 尝试{{dump(form.vars.value)}} 转储所有属性。尽管如此,form.vars.value.passWD 是一个字符串而不是一个对象,因此您不会从中获得任何属性。并且“3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2”看起来像一个sha512哈希盘
      • 我试过{{dump(form.vars.value.passWD)}},但也没有用!..顺便说一句,我正在尝试重复表单密码验证,因此我的目标是按顺序访问每个密码字段值之后比较它们。请你看看我刚刚在这个网站上问过的这个问题:http://stackoverflow.com/questions/27276231/repeated-form-password-field-confirmation-doesnt-work-in-symfony2...我已经尝试了很多来解决这个问题,但都是徒劳的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多