В моей UserEditType.php
:2 поля паролей отличаются в Symfony2
<?php
namespace HearWeGo\HearWeGoBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use HearWeGo\HearWeGoBundle\Entity\User;
class UserEditType extends AbstractType
{
protected $user;
public function __construct(User $user)
{
$this->user=$user;
}
/**
* @return mixed
*/
public function getUser()
{
return $this->user;
}
/**
* @param mixed $user
*/
public function setUser($user)
{
$this->user = $user;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('firstName','text',array('data'=>$this->user->getFirstName()))
->add('lastName','text',array('data'=>$this->user->getLastName()))
->add('email','email',array('data'=>$this->user->getEmail()))
->add('dateOfBirth','date',array(
'data'=>$this->user->getDateOfBirth(),
'years' => range(date('Y') -100, date('Y')-5)))
->add('phone','text',array('data'=>$this->user->getPhone()))
->add('password','repeated',array(
'type'=>'password',
'invalid_message'=>'Password fields must match',
'options'=>array('attr'=>array('class'=>'password-field')),
'required'=>true,
'first_options'=>array('label'=>'Password'),
'second_options'=>array('label'=>'Confirm password'),
))
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array('data_class'=>"HearWeGo\\HearWeGoBundle\\Entity\\User"));
}
public function getName()
{
return 'user_edit';
}
}
?>
В profile.html.twig
зрения:
<html>
<head>
<title>User Profile</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{{ asset('bundles/hearwegohearwego/css/bootstrap.min.css') }}" rel="stylesheet" type="text/css">
<link href="{{ asset('bundles/hearwegohearwego/css/profile.css') }}" rel="stylesheet" type="text/css">
<script src="{{ asset('bundles/hearwegohearwego/js/jquery-2.1.4.min.js') }}"></script>
<script src="{{ asset('bundles/hearwegohearwego/js/bootstrap.min.js') }}"></script>
</head>
<body>
<div id="toppage">
<img src="{{ asset('bundles/hearwegohearwego/images/banner.png') }}" style="width:100%">
</div>
<div class="container" align="center">
<img src="{{ asset('bundles/hearwegohearwego/images/personal/profile.png') }}" style="height:40px">
<div class="col-md-6">
<img src="{{ asset('bundles/hearwegohearwego/images/personal/avatar.png') }}" style="width:300px;margin-top: 10px">
{{ form_start(form) }}
<h4>{{ form.firstName.vars.data }} {{ form.lastName.vars.data }}</h4>
</div>
<div class="col-md-6" style="text-align:left">
<h5>First Name</h5>
{{ form_widget(form.firstName,{'attr':{'size':'40'}}) }}
<h5>Second Name</h5>
{{ form_widget(form.lastName,{'attr':{'size':'40'}}) }}
<h5>Email</h5>
{{ form_widget(form.email,{'attr':{'size':'40'}}) }}
<h5>Phone</h5>
{{ form_widget(form.phone,{'attr':{'size':'40'}}) }}
<h5>Date of Birth</h5>
{{ form_widget(form.dateOfBirth) }}
<h5>Password</h5>
{{ form_widget(form.password.first,{'attr':{'size':'40'}}) }}
{{ form_widget(form.password.second,{'attr':{'size':'40'}}) }}
<br><br>
{{ form_widget(form.submit) }}
<br><br>
{{ form_end(form) }}
</div>
</div>
<div class="container" align="center">
<img src="{{ asset('bundles/hearwegohearwego/images/personal/purchase.png') }}" style="height:40px">
</div>
</body>
</html>
В контроллере:
/**
* @Route("/profile",name="edit_profile")
*/
public function editProfile(Request $request)
{
if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')){
return new Response('Please login');
}
$this->denyAccessUnlessGranted('ROLE_USER', null, 'Unable to access this page!');
$user=$this->get('security.token_storage')->getToken()->getUser();
$form=$this->createForm(new UserEditType($user),$user,array('method'=>'POST','action'=>$this->generateUrl('edit_profile')));
$form->add('submit','submit',array(
'label'=>'',
'attr'=>array('class'=>'my-custom-button')
));
if ($request->getMethod()=='POST')
{
$form->handleRequest($request);
if ($form->isValid())
{
$em=$this->getDoctrine()->getEntityManager();
$em->persist($user);
$em->flush();
return $this->render('@HearWeGoHearWeGo/Default/profile.html.twig',array("form"=>$form->createView()));
}
}
return $this->render('@HearWeGoHearWeGo/Default/profile.html.twig',array("form"=>$form->createView()));
}
Как я искал, то "повторил" поле Тип создает два одинаковых поля, значения которых должны совпадать. Этот вид, который я создал, предназначен для редактирования пользователем своего профиля, и они также могут изменять пароль. Я хочу использовать первое поле пароля для ввода пароля, который они хотят изменить, а второй для подтверждения. Там в любом случае?
на первый взгляд, это должно работать. какую ошибку вы получаете? – Hakim
Этот код не содержит ошибок. Я просто хочу сказать, что повторяющийся тип используется для 2 одинаковых полей с соответствующими значениями. Я показываю код, поэтому мне нужна помощь, чтобы исправить его, чтобы я мог использовать 2 поля пароля с разными значениями, а не с одинаковыми значениями, первый - сменить пароль, второй - подтвердить изменения. – necroface
Ок, извините, я не понял, что , Вы не можете использовать повторное поле для этого. Оба значения должны совпадать в этом типе поля. – Hakim