Как правильно использовать контроллер и классы в blade и передать их во vue

Я создал контроллер через команду

php artisan make:controller UserController

далее я добавил в Route

Route::get('/', 'UserController@index')->name('home');

файл UserController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Auth;


class UserController extends Controller {

    public function info() {

        $array = array(
            "username"      => Auth::user()->name,
            "logout_link"   => route('logout'),
            "token"         => csrf_token()
        );

        return $array;
    }
    public function index() {

        return view('templates.home');

    }
}

Дальше я зашел в шаблон header.blade.php

@guest

   <a href="{{ route('login') }}" class="button small fit black">Авторизация</a>

@else

   <?php
      // Такое чувство что тут я делаю что то не правильно, но оно работает
      $userinfo = new \App\Http\Controllers\UserController();
   ?>
   <userblock-component :user-info='@json($userinfo->info())'></userblock-component>

@endguest

Вроде как все работает но думаю я делаю что то не так, не по "Laravel'овский"


Ответы (1 шт):

Автор решения: Enokin

Да, так лучше не делать и писать нужно по минимуму логики php в шаблонах. Лучше сделать AJAX запрос на этот метод из Vue в методе жизненного цикла mounted. Есть ещё вариант передавать данные из контроллера во вьюху сразу

return view('templates.home')->with('userInfo', $this->info());

и дальше можно запихать эти данные в формате json в javascript

<script>
const userInfo = @json($userInfo);
</script>
→ Ссылка