Отправка разных данных из разных методов по одному и тому же маршруту - laravel 8

Я пытаюсь получить данные заказа на вкладку заказа и детально данных в закладке профиля .

Можно ли добиться ???

Если да, то скажите, пожалуйста, как?

Если нет, тогда скажите мне, laravel - это наиболее продвинутая структура PHP, почему мы не можем отправлять несколько данных из нескольких методов в одном представлении?

Контроллер

      public function GetOrders()
{
    $gtord = DB::table('orders')->where('email',Session::get('email'))->get();

    return view('/my-account')->with('gtord',$gtord);
}

public function ProfileEdit() 
{
    $data = DB::table('customers')->where('email',Session::get('email'))->first();

    return view('/my-account')->with('data',$data);
}

Маршруты

      Route::get('/my-account', 'App\Http\Controllers\CustomerController@ProfileEd');

Route::get('/my-account', 'App\Http\Controllers\CustomerController@GetOrders');

заранее спасибо

2 ответа

У вас не может быть нескольких маршрутов с одинаковой «сигнатурой», то есть методом и URL-адресом.

Если вы просто показываете / скрываете вкладки с помощью JS, вы можете вернуть представление с двумя переменными, например:

      public function AccountView()
{
    $data = DB::table('customers')->where('email',Session::get('email'))->first();
    $gtord = DB::table('orders')->where('email',Session::get('email'))->get();

    return view('/my-account')->with(['data' => $data, 'gtord' => $gtord]);
}

А затем просто используйте один маршрут:

      Route::get('/my-account', 'App\Http\Controllers\CustomerController@AccountView');

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

Во-первых, у вас не может быть двух одинаковых маршрутов с одним и тем же методом. Это вполне логично и необходимо. В противном случае рухнет вся система маршрутизации.

С другой стороны, вы можете иметь функцию в контроллере и вызывать другие функции для сбора данных.

      // web.php

Route::get('/my-account', 'App\Http\Controllers\CustomerController@index');
      // controller
public function index()
{
    $orders = $this->getOrders();
    $profile = $this->getProfiles();

    return view('yourView', compact(['orders', 'profile']));
}

public function getOrders()
{
   // 
}


public function getProfiles()
{
   // 
}

Кстати, лучше перенести пользовательскую функцию в модели, сервисы или черты, а в контроллере оставить только функции 7 глаголов.

Другие вопросы по тегам