Symfony 4 x-editable - обновление - PullRequest
0 голосов
/ 22 мая 2019

Моя миссия - использовать x-editable библиотеку для начальной загрузки в Symfony 4. После нажатия на поле в таблице появляется «input» и значение из поля внутри.У меня проблема с обновлением базы данных.В приведенном ниже коде я делаю обновление базы данных с фиксированным значением «Коралик».Я бы хотел, чтобы обновление со значением из «input» пошло на базу.

<table id="tab1" class="table table-bordered table-striped table-hover"> 
<thead style="color:blue;">
<tr><th>Imię</th><th>Nazwisko</th></tr>
</thead>

<tbody id="myTable">
{%for kierowca_one in kierowca%}

<tr class="text-success">
<td>{{kierowca_one.Imie}}</td>
<td><span class="myElement" data-type="text" data-pk=" 
{{kierowca_one.id}}" data-url="{{path('app_update', 
{id:kierowca_one.id})}}">{{kierowca_one.Nazwisko}}</span> </td>
</tr>

{%endfor%}
</tboody>
</table>

$('.myElement').editable({ 
 type: "POST",
 emptytext: 'Brak',
 showbuttons: false,
 mode: 'inline',
 //dataType: 'json',
 validate: function(value){
 if($.trim(value) == '')
 {
 return 'This field is required';
 }
 }
}); 

   /**
* @Route("/update/{id}", name="app_update", methods={"GET"})
* @IsGranted("ROLE_USER")
*/
public function updateMethod(EntityManagerInterface $em, $id)
{

        $repository=$em->getRepository(Kierowcy::class);
        $kierowca=$repository->find($id);

        $kierowca->setNazwisko('Kowalik');
        $em->persist($kierowca);
        $em->flush();

        return new Response();

}

1 Ответ

0 голосов
/ 22 мая 2019

вот мой подход.

js файл

 $('#s').editable({
    selector: '.js-editable',
    url: urlUpdateTopic,
    params:function(params){
        params.pk = $(this).closest('tr').data('id');
        return params;
    },
    success: function(value, response) {
        if(response){
            $(this).html(value);
        }
    },
    error: function(response) {
        if(response.status === 500) {
            console.log('Service unavailable. Please try later.');
        } else {
            console.log(response.responseText);
        }
    },
    type: 'text',
    pk: 1,
    mode: 'inline',
    showbuttons: false,
    toggle: 'dblclick',
    onblur: "submit",
    clear: false,
    emptytext: ''
});

вот контроллер

public function updateTopicAction(Request $request)
{
    $id = $request->request->get('pk');
    $value = $request->request->get('value');
}

также вы можете увидеть хороший пример здесь Отправка данных через Ajax в X-Editable

...