Простой способ показать с помощью AJAX?

-2

У меня есть 6 функций в контроллерах для заказа по ASC и DESC 3fields.

Функции:

 public function orderByIdAsc(){
        $projects = DB::table('projects')->orderBy('id','asc')->get();
        return view('cms.public.views.projects.menu', ['projects' => $projects]); 

    }
    public function orderByIdDesc(){
        $projects = DB::table('projects')->orderBy('id','desc')->get();
        return view('cms.public.views.projects.menu', ['projects' => $projects]); 
    }
    public function orderByOrderAsc(){
        $projects = DB::table('projects')->orderBy('order','asc')->get();
        return view('cms.public.views.projects.menu', ['projects' => $projects]); 
    }
    public function orderByOrderDesc(){
        $projects = DB::table('projects')->orderBy('order','desc')->get();
        return view('cms.public.views.projects.menu', ['projects' => $projects]); 
    }
    public function orderByPublicAsc(){
        $projects = DB::table('projects')->orderBy('public','asc')->get();
        return view('cms.public.views.projects.menu', ['projects' => $projects]); 
    }
    public function orderByPublicDesc(){
        $projects = DB::table('projects')->orderBy('public','desc')->get();
        return view('cms.public.views.projects.menu', ['projects' => $projects]); 
    } 

С ее 6 маршрутами тоже:

Route::prefix('admin')->group(function () {

    Route::get('project/orderByIdAsc', ['uses' => 'AdminController@orderByIdAsc', 'as' => 'admin.projects.orderByIdAsc']);
        Route::get('project/orderByIdDesc', ['uses' => 'AdminController@orderByIdDesc', 'as' => 'admin.projects.orderByIdDesc']);
        Route::get('project/orderByOrderAsc', ['uses' => 'AdminController@orderByOrderAsc', 'as' => 'admin.projects.orderByOrderAsc']);
        Route::get('project/orderByOrderDesc', ['uses' => 'AdminController@orderByOrderDesc', 'as' => 'admin.projects.orderByOrderDesc']);
        Route::get('project/orderByPublicAsc', ['uses' => 'AdminController@orderByPublicAsc', 'as' => 'admin.projects.orderByPublicAsc']);
        Route::get('project/orderByPublicDesc', ['uses' => 'AdminController@orderByPublicDesc', 'as' => 'admin.projects.orderByPublicDesc']);
});

На данный момент я обращаюсь к следующим функциям:

<th><a href="{{ route('admin.projects.orderByIdAsc')}}"><span class="glyphicon glyphicon-arrow-up" id="orderByIdAsc"></span></a>Id<a href="{{ route('admin.projects.orderByIdDesc')}}"><span class="glyphicon glyphicon-arrow-down" id="orderByIdDesc"></span></a></th>
<th>Slug</th>
<th><a href="{{ route('admin.projects.orderByOrderAsc')}}"><span class="glyphicon glyphicon-arrow-up" id="orderByOrderAsc"></span></a>Order<a href="{{ route('admin.projects.orderByOrderDesc')}}"><span class="glyphicon glyphicon-arrow-down" id="orderByOrderDesc"></span></a></th>
<th><a href="{{ route('admin.projects.orderByPublicAsc')}}"><span class="glyphicon glyphicon-arrow-up" id="orderByPublicAsc"></span></a>Public<a href="{{ route('admin.projects.orderByPublicDesc')}}"><span class="glyphicon glyphicon-arrow-down" id="orderByPublicDesc"></span></a></th>

Любой способ сделать это с ajax проще, чем сделать 6 divs и скрыть/отобразить его?

Большое спасибо!

  • 0
    Все ли они возвращают одни и те же данные, просто упорядоченные по-разному? То есть ваша страница запрашивает одни и те же данные снова и снова? Да, есть более простой способ сделать это. Запрашивайте данные один раз и сортируйте их по необходимости в JavaScript. Или ты спрашиваешь что-то еще? Это не совсем понятно.
  • 0
    Одним из вариантов является использование Route::get('project/orderBy/{field_name}/{asc_desc} и получение этих аргументов в Request. При этом вам нужен только один маршрут и один метод.
Показать ещё 6 комментариев

1 ответ

1
Лучший ответ

Для этого случая у вас есть два варианта:

  • Первый: использование параметров пути

Вы можете комбинировать все маршруты заказа в одном:

Route::prefix('admin')->group(function () {

    Route::get('project/order/{field}/{order}', [
                'uses' => 'AdminController@order', 
                'as' => 'admin.projects.order'
            ]);

});

В вашем AdminController:

public function order($field, $order) 
{
    $projects = DB::table('projects')->orderBy($field,$order)->get();
    return view('cms.public.views.projects.menu') 
               ->withProjects($projects);
}

В представлении:

<a href="{{ route('admin.projects.order', ['field' => 'id', 'order' => 'asc']) }}">Order by ID</a>
  • Второй: использование строк запроса

Для маршрута:

Route::prefix('admin')->group(function () {

    Route::get('project/order', [
                'uses' => 'AdminController@order', 
                'as' => 'admin.projects.order'
            ]);

});

В вашем AdminController:

public function order(\Illuminate\Http\Request $request) 
{
    $order = $request->query('order');
    $field = $request->query('field');
    $projects = DB::table('projects')->orderBy($field,$order)->get();
    return view('cms.public.views.projects.menu') 
               ->withProjects($projects);
}

И в перспективе:

<a href="{{route('admin.projects.order', ['field' => 'id', 'order' => 'desc'])}}">Order by ID</a>
  • 1
    Оно работает! Спасибо!
  • 0
    Привет, друг, я думаю, что мне действительно нужна твоя помощь @Maraboc, мы можем поговорить, пожалуйста?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню