我需要编辑数据表中的一行,问题是编辑模态,当我使用id时,我单击编辑按钮,模态打开并检索我的表的数据,但我不能编辑数据,除了我可以编辑的数据表的第一行。
当我使用类时,如果我编辑表的最后一行,它将修改第一行,但使用最后一行的数据。
->控制器通过id获取用户并编辑:
$controllers->post('/modif', function (App $app,Request $request) {
try{
$ListeUser =$app->service('User')->getUser($request->get('id'));
$ListeUser->setNom($request->get('nom'));
$ListeUser->setPrenom($request->get('prenom'));
$ListeUser->setAdresse($request->get('adresse'));
$ListeUser->setLogin($request->get('login'));
$ListeUser->setPassword($request->get('password'));
$ListeUser->setAcces($request->get('acces'));
$ListeUser->setArchive($request->get('archive'));
$app->sauvegarder($ListeUser);
return new Response('sauvegarde',200);
} catch (Exception $ex) {
return new Response($ex->getMessage(),400);
}
})->bind('modif')->before($this['loginok'])->before($this['isAdmin']);
这是trick中的模态:
{% for user in users %}
<div class="modal fade" data-user-id="{{ user.id }}" role="dialog" tabindex="-1" id="modalModifCl">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button aria-label="Close" class="close" data-dismiss="modal" type="button"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Modifier Client</h4>
</div>
<!--FORMULAIRE -->
<div class="modal-body">
<!-- APPEL FONCTION -->
<form action="{{app.route('modif',{'id':user.id})}}" class="form-horizontal form3" method="post" >
<input id="idClient" name="id" type="hidden" value="{{user.id}}">
<div class="form-group">
<label class="col-sm-2" for="nom">Nom</label>
<div class="col-sm-10">
<input class="form-control" id="nom" name="nom" placeholder="Nom" type="text" value="{{user.nom}}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2" for="prenom">Prénom</label>
<div class="col-sm-10">
<input class="form-control" id="prenom" name="prenom" placeholder="Prénom" type="text" value="{{user.prenom}}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2" for="adresse">Adresse</label>
<div class="col-sm-10">
<input class="form-control" id="adresse" name="adresse" placeholder="Adresse" type="text" value="{{user.adresse}}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2" for="login">Login</label>
<div class="col-sm-10">
<input class="form-control" id="login" name="login" placeholder="Login" type="text" value="{{user.login}}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2" for="password">Mot de passe</label>
<div class="col-sm-10">
<input class="form-control" id="password" name="password" placeholder="Mot de passe" type="password" value="{{user.password}}">
</div>
</div><!-- archive caché-->
<input class="form-control" id="archive" name="archive" placeholder="archive" type="hidden" value="{{user.archive}}"> <!-- acces caché-->
<div class="form-group">
<div class="cols-sm-10">
<select class="form-control" id="acces" name="acces">
<option value="2">
Client Prive
</option>
<option value="3">
Client Pro
</option>
<option value="1">
Admin
</option>
</select>
</div>
</div>
</form>
</div><!--BOUTONS FERMER ET VALIDER DANS FORMULAIRE MODIFIER CLIENT-->
<div class="modal-footer">
<button class="btn btn-default" data-dismiss="modal" type="button">Fermer</button>
<button class="btn btn-primary validerMod" type="button">Valider </button>
</div>
</div>
</div>
</div>
{% endfor %}
jQuery:
$(function () {
/* MODAL Modifier client Privé */
$('.btMod').click (function(e){
e.preventDefault();
$('.modal[data-user-id="'+$(this).data('id')+'"]').modal({
show:true,
backdrop:'static'
});
});
/* MODAL BOUTON VALIDER FORMULAIRE MODIFIER CLIENT PRIVE */
$('.validerMod').click(function(e){
e.preventDefault();
$.ajax({
url:$('.form3').attr('action'),
type: $('.form3').attr('method'),
data: $('.form3').serialize()
}).done(function(data){
$('#modalModifCl').modal('hide');
window.location.href='{{app.route('clientsPrive')}}';
alert("Client modifié avec succès !");
}).fail(function(data){
console.log(data.responseText);
});
});
});
编辑:以下是trick中的数据表代码:
<div class="row" style=" display:flex; margin-left: auto; margin-right:auto; width:100%; margin-bottom: 5vw; margin-top:1vw;
border:1px solid #b1e7e7; background:rgba(102, 204, 255, 0.05);">
<div class="col-lg-12" >
<table id="user" class="display" >
{%if app.isAdmin %}
<button id="bt-{{user.id}}" data-id="{{user.id}}" class="btn btn-primary act btClient" style="background:#0088cc; font-size:0.4vw;" title="Nouveau client">
<span class ="glyphicon glyphicon-plus" style="font-size:1vw;"></span></button>
{%endif%}
<!-- TABLE USER -->
{% for user in users %}
<tr>
<td> {{user.id}} </td>
<td> {{user.nom}} </td>
<td> {{user.prenom}} </td>
<td> {{user.adresse}} </td>
<td> {{user.login}} </td>
<td> {{user.AccesString}} </td>
<!--BOUTONS DANS DATATABLE-->
<td>
{%if app.isAdmin %}
<!-- Bouton Details client-->
<button style="font-size:0.4vw; background:#0088cc;" class="btn btn-info" title="Détails">
<span class ="glyphicon glyphicon-search" style="font-size:1vw;"></span></button>
<!-- Bouton Ajouter compte client-->
<button id="bt-{{user.id}}" data-id="{{user.id}}" class="btn btn-primary act btCpCl" style="background:rgba(0, 136, 204, 0.5); font-size:0.4vw;" title="Nouveau compte">
<span class ="glyphicon glyphicon-plus" style="font-size:1vw;"></span></button>
<!-- Bouton Modif client-->
<button id="bt-{{user.id}}" data-id="{{user.id}}" class="btn btn-primary act btMod" style="background:rgba(0, 136, 204, 0.5); font-size:0.4vw;" title="Nouveau compte">
<span class ="fa fa-pencil" style="font-size:1vw;"></span></button>
<!-- Bouton Liste des comptes par client-->
<a style="font-size:0.4vw; background:rgba(0, 136, 204, 0.7);" href="{{app.route('listeCp',{id:user.id})}}" class="btn btn-info" title="Liste des comptes">
<span class ="glyphicon glyphicon-th-list" style="font-size:1vw;"></span></a>
{%endif%}
</td>
</tr>
{% endfor%}
</table>
</div>
</div>
在基于Symfony
的Laravel
中,您可以在命名路由中传递参数,如
<form
method="GET"
action="{{ app.route('getuser',['id' => $id ])}}"
>
...
</form>
问题是运行时user
变量不存在
form class="form-horizontal" id="form3" action="{{ app.route('getuser',{'id':user.id})}}" method="get">
一个解决方案是为每个用户创建模式容器
{% for user in users %}
<div class="modal fade" data-user-id="{{ user.id }}" role="dialog" tabindex="-1">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button aria-label="Close" class="close" data-dismiss="modal" type="button"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Modifier Client</h4>
</div><!--FORMULAIRE -->
<div class="modal-body">
<!-- APPEL FONCTION -->
<form action="{{ app.route('getuser',{'id':user.id})}}" class="form-horizontal" method="get" name="form3">
<input name="id" type="hidden" value="">
<div class="form-group">
<label class="col-sm-2" for="nom">Nom</label>
<div class="col-sm-10">
<input class="form-control" name="nom" placeholder="Nom" type="text" value="{{user.nom}}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2" for="prenom">Prénom</label>
<div class="col-sm-10">
<input class="form-control" name="prenom" placeholder="Prénom" type="text" value="{{user.prenom}}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2" for="adresse">Adresse</label>
<div class="col-sm-10">
<input class="form-control" name="adresse" placeholder="Adresse" type="text" value="{{user.adresse}}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2" for="login">Login</label>
<div class="col-sm-10">
<input class="form-control" name="login" placeholder="Login" type="text" value="{{user.login}}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2" for="password">Mot de passe</label>
<div class="col-sm-10">
<input class="form-control" name="password" placeholder="Mot de passe" type="password" value="{{user.password}}">
</div>
</div><!-- archive caché-->
<input class="form-control" name="archive" placeholder="archive" type="hidden" value="{{user.archive}}"> <!-- acces caché-->
<div class="form-group">
<div class="cols-sm-10">
<select class="form-control" name="acces">
<option value="2">
Client Prive
</option>
<option value="3">
Client Pro
</option>
<option value="1">
Admin
</option>
</select>
</div>
</div>
</form>
</div><!--BOUTONS FERMER ET VALIDER DANS FORMULAIRE MODIFIER CLIENT-->
<div class="modal-footer">
<button class="btn btn-default" data-dismiss="modal" type="button">Fermer</button> <button class="btn btn-primary" type="button">Valider</button>
</div>
</div>
</div>
</div>
{% endfor %}
然后,您可以通过调整javascript 来显示正确的模式
$('.btMod').click (function(e){
e.preventDefault();
$('.modal[data-user-id="'+$(this).data('id')+'"]').modal({
show:true,
backdrop:'static'
});
});
侧注
您的代码生成了许多具有相同id
的HTML元素,这是不正确的,并且在尝试引用这些id
时会使您的JavaScript无法正常工作。我没有在上面的代码中编辑出这些id
,但你肯定应该这样做。