无法切换活动/非活动状态Laravel中的行

时间:2017-06-05 15:42:21

标签: php laravel

我为用户轻松打开或关闭帖子制作自定义视图。喜欢这张图片。

screenshot_2017-06-05_16-02-19

我有一个错误:

  

POST http://127.0.0.1:8000/admin/apartments/1/active 404(未找到)。

Controller/Admin/ApartmentController.php

public function index(Request $request)
{
    $variations = Apartment::all();
    $dataType = DataType::where('slug', '=', 'products')->first();
    return view('voyager::apartments.browse', compact('dataType', 'variations'));
}
public function active(Apartment $apartment)
{
    $apartment->active = true;
    $apartment->save();
}

resources/views/vendor/voyager/apartments/browse.blade.php

<tbody>
    @foreach($variations as $data)
        <tr>
            <?php $checked = ($data->active == 1) ? true : false; ?>
            <td>
                <input type="checkbox" name="active" data-id="{{$data->id}}" class="toggleswitch toggleactive" @if($checked) checked @endif>
            </td>
        </tr>
    @endforeach
</tbody>

@section('javascript')
    <!-- DataTables -->
    <script>

      $(document).ready(function(){
          $('.toggleswitch').bootstrapToggle();
      });

      function parseActionUrl(action, id) {
          if (action.match(/\/[0-9]+$/)) {
              return action.replace(/([0-9]+$)/, id);
          }
          return action + '/' + id;
      }

      $('.toggleactive').on('change', function() {
          $.post('/admin/apartments/' + $(this).data('id') + '/active', { active: ($(this).is(':checked')) ? 1 : 0, _token : '{{ csrf_token() }}' }, function(){
              toastr.success("Updated success: apartment is actived");
          });
      });


    </script>
@stop

...和routes/web.php

Route::group(['prefix' => 'admin'], function () {
    Voyager::routes();

    Route::post('apartments/:id/active', 'ApartmentController@active');

    Route::group(['middleware' => ['admin.user'], 'as' => 'voyager.'], function () {
        Route::resource('apartments', 'Admin\ApartmentController');
    });
});

注意:

如果我想点击按钮On,请显示以下消息:The apartment is enabled。此外,点击按钮Off时,它会显示按钮The apartment is disabled

有最好的方法来更改此代码吗?

$('.toggleactive').on('change', function() {
    $.post('/admin/apartments/' + $(this).data('id') + '/active', { active: ($(this).is(':checked')) ? 1 : 0, _token : '{{ csrf_token() }}' }, function(){
        toastr.success("Updated success: apartment is actived");
    });
});

1 个答案:

答案 0 :(得分:1)

将路线更改为此。

Route::post('apartments/{apartment}/active', 'Admin\ApartmentController@active');

同时将控制器方法更改为此。

public function active(Apartment $apartment)
{
    $apartment->active = request('active');
    $apartment->save();
}

修改:执行此操作以根据请求更新您的Toast消息。

public function active(Apartment $apartment)
{
    $status = request('active');
    $apartment->active = $status;
    $apartment->save();

    return $status;
}

$('.toggleactive').on('change', function() {
    $.post('/admin/apartments/' + $(this).data('id') + '/active', { active: ($(this).is(':checked')) ? 1 : 0, _token : '{{ csrf_token() }}' }, function(data){
        toastr.success("Updated success: The apartment is " + (data == 1 ? 'enabled' : 'disabled'));
    });
});