Возврат пользовательской переменной в настройках - Laravel Spark

Я настроил Spark и создал свой собственный вид в «Настройки» — «Студенты» (предположим, что объект «Пользователь» на самом деле является учителем). Я также создал миграцию и модель Student.

Теперь http://spark.app/settings/students успешно возвращает страницу. На данный момент мне нужно вернуть данные из бэкэнда. Я исследовал Spark\Http\Controllers\Settings\DashboardController@show - это метод, возвращающий представление «настройки», однако он не возвращает никаких данных для просмотра с использованием ->with('user', $user)

Но, как указано в Документах, :user="user" :teams="teams" :current-team="currentTeam" уже доступен из коробки.

Где и как Spark возвращает эти значения в /settings? И как мне сделать мой объект Student таким же доступным?


Теперь, если я хочу вернуть свой объект Student во внешний интерфейс, у меня есть 2 варианта.

1) редактировать Spark\Http\Controllers\Settings\DashboardController

2) Я думаю, что Spark\InitialFrontendState - это место, где Spark возвращает эти объекты user, team, currentTeam. Честно говоря, я впервые увидел такой подход и не совсем понял, как он работает.

Итак, как мне добиться в Spark чего-то такого простого, как:

return view('spark::settings')->with('student', $student); ?


person senty    schedule 12.12.2017    source источник


Ответы (1)


Добавьте новый маршрут и настройте свой собственный контроллер и собственное представление.

web.php

Route::get('/settings/students', 'SettingsStudentController@index');

SettingsStudentController.php

class SettingsStudentController extends Controller {
    public function __construct() {
        $this->middleware('auth');
    }
    public function index(Request $request) {
            $user          = Auth::user();
            $student = STUDENTCLASS::whatever();
            return view('yourstudentview', ['student' => $student , 'user' => $user]);
    }
}
person timod    schedule 13.12.2017
comment
вопрос был - как Spark возвращает эти глобальные значения - person senty; 13.12.2017
comment
Ага, хорошо. На каждой странице есть глобальный искровой объект (javascript). устанавливается в файле vendor\spark\layouts\app.blade.php. он получает свои переменные из трейта ProvidesScriptVariables (vendor\laravel\spark\src\Configuration\ProvidesScriptVariables.php)... собственная новая страница настроек была бы намного проще, потому что при обновлении spark до новой версии все перезаписывается - person timod; 13.12.2017
comment
@senty тебе подходит? - person timod; 15.12.2017