Отправка разных данных из разных методов по одному и тому же маршруту - 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 глаголов.