【问题标题】:X-Editable table in laravel using blade使用刀片在 laravel 中的 X-Editable 表
【发布时间】:2018-02-13 20:33:42
【问题描述】:

我是网络编程学科的新手。我正在为视图使用 laravel 和 Blade 做一个项目,我想为我的一个数据库创建一个 X 可编辑表,这样用户就不需要进入不同的视图来编辑数据。

不管怎样,我有很多烦恼。

我在mysql中有这个数据库:

MySql database

路线 我在文件路由中的 web.php 文件中执行此操作

Route::resource('/test','PruebaController');
Route::get('/test', 'PruebaController@index')->name('test');
Route::post('test/updatetest','PruebaController@updatetest')->name('updatetest');

控制器

public function index(Request $request)
{
    if ($request){
        $test=DB::table('pruebas')
        ->orderBy('nombre','asc')
        ->get();

        $test_model = new Prueba();
        $fillable_columns = $test_model->getFillable();
        foreach ($fillable_columns as $key => $value) 
        {
            $test_columns[$value] = $value;
        }

        return view('test.index')
        ->with('test', $test)
        ->with('test_columns', $test_columns);
    }
}

public function updatetest(Request $request, $id)
{
    try 
    {
        $id =$request->input('pk');
        $field = $request->input('name');
        $value =$request->input('value');


        $test = Prueba::findOrFail($id);
        $test->{$field} = $value;
        $test->save();
    }
    catch (Exception $e)
    {
        return response($e->intl_get_error_message(), 400);
    }
    return response('',200);

}

查看

@extends ('layouts.admin')
@section ('contenido')


<div class="panel-heading">
    <h4>
        Listado de nombres
    </h4>
    @if (count($errors)>0)
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{$error}}</li>
                @endforeach
            </ul>
        </div>
    @endif
</div>

<div class="panel-body">
    <form action="{{route('updatetest')}}" method="post">
    {{csrf_field()}}
        <table class="table table-hover nowrap" id="example" width="100%">
            <thead class="thead-default">
                <tr>
                    <th>ID</th>
                    <th>Nombre</th>
                    <th>Cédula</th>
                    <th>Edad</th>
                </tr>
            </thead>
            @foreach ($test as $t)
            <tbody>
                <tr>
                    <td>{{$t->id}}</td>
                    <td>
                        <a 
                        href="#" 
                        class="nombre" 
                        data-type="text"
                        data-pk="{{$t->id}}"
                        data-value="{{$t->nombre}}" 
                        data-title="Cambie el nombre"
                        data-url="{{route('updatetest') }}">
                            {{$t->nombre}}
                        </a>
                    </td>
                    <td>
                        <a 
                        href="#" 
                        class="cedula" 
                        data-type="number"
                        data-pk="{{$t->id}}"
                        data-value="{{$t->cedula}}" 
                        data-title="Cambie la cedula"
                        data-url="{{route('updatetest') }}">
                            {{$t->cedula}}
                        </a>
                    </td>
                    <td>
                        <a 
                        href="#" 
                        class="edad" 
                        data-type="number"
                        data-pk="{{$t->id}}"
                        data-value="{{$t->edad}}" 
                        data-title="Cambie la edad"
                        data-url="{{route('updatetest') }}">
                            {{$t->edad}}
                        </a>
                    </td>                   
                </tr>    
            </tbody>
            @endforeach
        </table>
    </form>
</div>
@endsection

AJAX 脚本

<script type="text/javascript">
$(document).ready(function() {
  //toggle `popup` / `inline` mode
  $.fn.editable.defaults.mode = 'inline';
  $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    id = $(this).data('pk');
    url = $(this).data('url');

    //make username editable
    $('.nombre').editable({
      url: url,
      pk: id,
      type:"text",
      validate:function(value){
        if($.trim(value) === '')
        {
          return 'This field is required';
        }
      }
    });


    $('.cedula').editable({
      url: url,
      pk: id,
      type:"number",
      validate:function(value){
        if($.trim(value) === '')
        {
          return 'This field is required';
        }
      }
    });

    $('.edad').editable({
      url: url,
      pk: id,
      type:"number",
      validate:function(value){
        if($.trim(value) === '')
        {
          return 'This field is required';
        }
      }
    });

});
</script>

问题是 x-editable 不起作用,当我单击该字段时没有任何反应。知道这是为什么吗?

非常感谢您的帮助。

【问题讨论】:

    标签: php laravel blade x-editable inline-editing


    【解决方案1】:

    改变

    <form action="{{route('test/updatetest')}}" method="post">
    

    <form action="{{route('updatetest')}}" method="post">
    

    路由函数为给定的命名路由生成一个 URL:

    $url = route('routeName');

    您可以阅读更多关于它的信息here

    【讨论】:

    • 谢谢,解决了路由错误。我的问题是 x-editable 不起作用;知道为什么吗?
    猜你喜欢
    • 2013-08-09
    • 2022-01-13
    • 2017-10-17
    • 2018-05-25
    • 2016-03-18
    • 2015-08-06
    • 2019-01-31
    • 2017-10-08
    • 2021-07-07
    相关资源
    最近更新 更多