【发布时间】:2019-05-16 21:49:56
【问题描述】:
每当我想编辑表单的字段(例如(名称、用户名、电子邮件...)时,我都会遇到问题,数据库中的密码字段为空。我应该怎么做我想保持不变(我不想改变它)我希望能够只编辑我选择的字段。
PS:我在用户名字段上也遇到了这个问题,但我设法通过将其设置为“只读”来解决它,但我不能对密码字段做同样的事情。并且这些字段属于 2 个不同的实体用户和开发者。 我将分享 TWIG(form edit) 、 formBuilder(UserType) 和 UserController
{{ form_start(form) }}
<div id="main-wrapper" >
<div class="page-wrapper">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body formEdit">
<form class="m-t-40" novalidate>
<div class="form-group form-md-line-input has-success" >
<label class="col-md-2 control-label" for="form_control_1">Nom</label>
<div class="col-md-8" >
<input type="text" class="form-control" id="form_control_1" required data-validation-required-message="This field is required" {{ form_widget(form.firstname,{'attr':{'class':'form-control'}}) }}
<div class="form-control-focus"> </div>
</div>
</div>
<div class="form-group form-md-line-input has-success">
<label class="col-md-2 control-label" for="form_control_1">Prénom</label>
<div class="col-md-8">
<input type="text" class="form-control" id="form_control_1" required data-validation-required-message="This field is required" {{ form_widget(form.lastname,{'attr':{'class':'form-control'}}) }}
<div class="form-control-focus"> </div>
</div>
</div>
<div class="form-group form-md-line-input has-success" >
<label class="col-md-2 control-label" for="form_control_1">id</label>
<div class="col-md-8" >
<input readonly="" type="text" class="form-control" id="form_control_1" required data-validation-required-message="This field is required" {{ form_widget(form.user.username,{'attr':{'class':'form-control'}}) }}
<div class="form-control-focus" > </div>
</div>
</div>
<div class="form-group form-md-line-input has-success" >
<label class="col-md-2 control-label" for="form_control_1">Solde conge annuel</label>
<div class="col-md-8" >
<input type="text" class="form-control" id="form_control_1" required data-validation-required-message="This field is required" {{ form_widget(form.user.soldecongeannuel,{'attr':{'class':'form-control'}}) }}
<div class="form-control-focus" > </div>
</div>
</div>
<div class="text-xs-right col-xs-12 selectbutton" align="center">
<button type="submit" id="btn-save" name="btn-save" class="btn btn-primary">Sauvgarder</button>
<button onclick="history.go(-1);" type="button" class="btn btn-default">Annuler</button>
</div>
</form>
</div></div></div></div>
</div></div>
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', 'email', array(
'label'=>'Email *',
'attr'=>array('class'=>'form-control',
'onchange'=>'check_email(value)'),
'label_attr'=>array('class'=>'label-control red')))
->add('username', 'text', array(
'label'=>"Identifiant *",
'attr'=>array('class'=>'form-control',
'onchange'=>'check_username(value)'),
'label_attr'=>array('class'=>'label-control red')))
->add ('password', 'repeated', array (
'type' => 'password',
'first_name' => "password",
'second_name' => "confirm",
'first_options' => array('label' => 'Mot de passe *',
'attr'=>array('class'=>'form-control'),
'label_attr'=>array('class'=>'label-control red')),
'second_options' => array('label' => 'Confirmation mot de passe *',
'attr'=>array('class'=>'form-control'),
'label_attr'=>array('class'=>'label-control red')),
'invalid_message' => "Mot de passe incorrect !",
'attr'=>array('class'=>'form-control'),
'label_attr'=>array('class'=>'label-control')
))
->add('soldecongeannuel', 'integer', array(
'label'=>"Solde congé annuel *",
'attr'=>array('class'=>'form-control',
'onchange'=>'check_username(value)'),
'label_attr'=>array('class'=>'label-control red')))
->add('soldemaladie', 'integer', array(
'label'=>"Solde maladie *",
'attr'=>array('class'=>'form-control',
'onchange'=>'check_username(value)'),
'label_attr'=>array('class'=>'label-control red')))
->add('soldeautremotif', 'integer', array(
'label'=>"Solde autre motif *",
'attr'=>array('class'=>'form-control',
'onchange'=>'check_username(value)'),
'label_attr'=>array('class'=>'label-control red')))
;
}
public function editAction($username, Request $request) {
//$em = $this->getDoctrine()->getManager();
$userManager = $this->get('fos_user.user_manager');
$user = $this->getUser();
if(!is_object($user))
return $this->redirect($this->generateUrl('fos_user_security_login'));
【问题讨论】:
-
这个问题已经被问过很多次了。至少对我来说,答案是使用多个表单,而不是尝试调整一个主表单。
标签: php symfony symfony-2.7