Состояние маршрутов Laravel в зависимости от того, какой путь, как получить правильный путь - PullRequest
1 голос
/ 07 октября 2019

Мои маршруты:

маршруты для разных видов

Route::get('/participants', 'DatatablesController@getIndex')->name('participants');
Route::get('/completed', 'DatatablesController@getIndex')->name('completed');
Route::get('/failed', 'DatatablesController@getIndex')->name('failed');
//route to get data to views
Route::get('participants_dt', 'DatatablesController@getData')->name('get.survey_requests');

Контроллер:

public function getData()
{
    $request = Request::path();
    error_log($request);
    // $request returns participant_dt currently.
    // I want it to return based on which view I'm on.

    if ($request == 'participants') {
        //return query
    } elseif ($request == 'complete') {
        //return complete
    } else {
        //return failed
    }
}

Есть ли способ назвать мой маршрут в зависимости от того, на каком маршруте он находится? ? например, если выбран маршрут / завершить, то маршрут участники_дт будет назван завершенным?

Ответы [ 2 ]

2 голосов
/ 07 октября 2019

Поскольку ваши представления находятся на разных маршрутах, вы можете использовать предыдущий URL-адрес, чтобы определить, с какого представления был получен запрос

public function getData()
{
    $request = url()->previous(); // Get previous URL
    $request = parse_url($request)['path']; // Remove domain name
    $request = ltrim($request, '/'); // Remove first slash
    error_log($request);
    dd($request); // Returns the route where the view is (ex: participants)
    if ($request == 'participants') {
        //return query
    } elseif ($request == 'complete') {
        //return complete
    } else {
        //return failed
    }
}

Надеюсь, это поможет

1 голос
/ 07 октября 2019

В идеале, ваши маршруты должны идти разными способами в контроллере. Например:

Route::get('/completed', 'DatatablesController@getCompleted')->name('completed');
Route::get('/failed', 'DatatablesController@getFailed')->name('failed');

А потом в вашем контроллере:

public function getCompleted() {
    $this->getData('completed');
}

public function getFailed() {
   $this->getData('failed');
}

protected function getData($status_type = 'participants')
{
    if ($status_type == 'participants') {
        //return query
    } elseif ($status_type == 'complete') {
        //return complete
    } else {
        //return failed
    }
}

Надеюсь, что поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...