2017-10-19 5 views
2

Je travaille dans laravel et j'envoie beaucoup de données comprennent la liste déroulante qui ont une valeur, 0,1,2 qui signifie haut, droite, Gauche le problème est quand Im en utilisant la fonction de mise à jour dans le contrôleur seulement je reçois 0 ou 1 ou 2 dépend de ce que j'ai entré et doit actualiser pour voir le texte bcause Im en utilisant json et ajax après cliquez sur Enregistrer.Laravel- Comment utiliser commutateur case en javascript si je passais la variable au contrôleur et enregistré dans la base de données

Html

<select class="form-control" id="position_edit" name="position_edit"> 
       <option value="0">TOP</option> 
       <option value="1">RIGHT</option> 
       <option value="2">LEFT</option> 
       <option value="3">BOTTOM</option> 
       </select> 

contrôleur

public function updatebanner(Request $request) 
{ 
    if ($request->hasFile('image')) { 
    $imagename = time().'.'.$request->file('image')->getClientOriginalExtension(); 
    $path =$request->file('image')->storeAs('/images', $imagename); 

    $post = Advertisement::findOrFail($request->id); 
    $post->adver_title = $request->title_edit; 
    $post->adver_url = $request->url_edit; 
    $post->adver_position = $request->position_edit; 
    $post->adver_photo = $imagename; 
    $post->save(); 
} 

code ajax

$('.item' + data.id).replaceWith(" 
<tr class='item" + data.id + "'> 
    <td class='col1'>" + data.id + "</td> 
    <td><img src='images/" + data.adver_photo + "'style='width: 50%;margin-left: 35px;border-radius: 3px;border: 1px solid #1a2732;' /> </td> 
    <td>" + data.adver_title + "</td> 
    <td>" +data.adver_position+ "</td> 
    </td> 
    <td class='text-center'><input type='checkbox' class='edit_published' data-id='" + data.id + " '></td> 
    <td style='text-align:center;'>Right Now!</td> 
    <td><button class='show-modal btn btn-success' data-id='" + data.id + "' data-titlefield='" + data.adver_title + "' data-photofield='images/" + data.adver_photo + "'><span class='fa fa-eye'></span> Show</button> <button class='edit-modal btn btn-info' data-id='" + data.id + "' data-titlefield='" + data.adver_title + "' data-photofield='images/" + data.adver_photo + "'><span class='fa fa-pencil-square'></span> Edit</button> <button class='delete-modal btn btn-danger' data-id='" + data.id + "' data-titlefield='" + data.adver_title + "' data-photofield='images/" + data.adver_photo + "'><span class='fa fa-trash-o'></span> Delete</button></td> 
</tr> 
"); 

J'ai essayé d'utiliser le le code suivant mais le problème ne fonctionne pas si la valeur de adver_position enregistrée sur la base de données, il retournera en blanc sans numéro ou le texte et ont pour réactualiser la page pour voir le texte

var content = "<tr class='item" + data.id + "'> " 
      + "<td class='col1'>" + data.id + "</td> " 
      + "<td><img src='images/" + data.adver_photo + "'style='width: 50%;margin-left: 35px;border-radius: 3px;border: 1px solid #1a2732;' /> </td>" 
      + "<td>" + data.adver_title + "</td>" 
      + "<td> "; 

    switch(data.adver_position) { 
case 0: 
    content = content + "TOP"; 
    break; 
case 1: 
    content = content + "RIGHT"; 
    break; 
case 2: 
    content = content + "LEFT"; 
    break; 
case 3: 
    content = content + "BOTTOM"; 
    break; 
} 

content = content + "</td> </tr>" 


$('.item' + data.id).replaceWith(content); 
+0

Pouvez-vous ajouter votre code de contrôleur? – Maraboc

+0

Contrôleur ajouté, espoir trouver de l'aide –

+0

Ok pourquoi n'utilisez-vous pas enum pour le champ 'adver_position' et dans l'utilisation select directement' '?? – Maraboc

Répondre

0

Vous pouvez essayer:

content += $('#position_edit option:checked').text(); 

Au lieu de la switch. Cela affectera simplement le texte de la position sélectionnée.

Edit: Remplacer tout ceci:

switch(data.adver_position) { 
case 0: 
    content = content + "TOP"; 
    break; 
case 1: 
    content = content + "RIGHT"; 
    break; 
case 2: 
    content = content + "LEFT"; 
    break; 
case 3: 
    content = content + "BOTTOM"; 
    break; 
} 

Avec la solution fournie.

+0

comment puis-je remplacer cela? J'ai essayé mais javascript a cessé de fonctionner –

+0

@ GhadahSalman vérifier la réponse mise à jour. – mega6382

+0

super, beaucoup de thaaaaaaaaaaanks veulent juste ajouter style = 'text-align: center;' désolé im débutant –

2

De ma compréhension de votre question, Je pense que lorsque vous enregistrez dans la base de données à partir de votre contrôleur, vous ne renvoyez pas la réponse à l'interface, qui peut être utilisée pour mettre à jour votre contenu.

Pourquoi ne pas faire quelque chose comme ça?

public function updatebanner(Request $request) 
    { 
if ($request->hasFile('image')) { 
$imagename = time().'.'.$request->file('image')->getClientOriginalExtension(); 
$path =$request->file('image')->storeAs('/images', $imagename); 

$post = Advertisement::findOrFail($request->id); 
$post->adver_title = $request->title_edit; 
$post->adver_url = $request->url_edit; 
$post->adver_position = $request->position_edit; 
$post->adver_photo = $imagename; 
$post->save(); 
return response(['item'=>$post]); /// return response 

}