2016-08-24 3 views
0

Я использую Ratchet для websockets. Он работает в целом, но я хочу использовать его в моем примере управления Laravels Auth. Он должен быть легким, но это не работает:Laravel 5.2 и Ratchet Класс не найден

<?php namespace Annotation\Http\Controllers; 
use Auth; 
use Ratchet\MessageComponentInterface; 
use Ratchet\ConnectionInterface; 

class ExampleController extends Controller implements MessageComponentInterface { 

    public function onOpen(ConnectionInterface $conn) { 
     echo Auth::id(); 

    //etc. 
     echo "New Connection! ({$conn->resourceId})"; 
    } 

} 

Я всегда получаю класса Auth не найден исключение, когда я инициализировать мой контроллер в WebSocket-server.php (находится в корневой директории в Laravel файл) ниже :

<?php 
require __DIR__.'/vendor/autoload.php'; 

use Ratchet\Server\IoServer; 
use Annotation\Http\Controllers\CollaborativeController; 

$server = IoServer::factory(
    new ExampleController(), 
    8080 
); 
$server->run(); 

Если я использую свой ExampleController в качестве обычного контроллера с маршрутом, будет найден класс Auth. (Я также не могу использовать помощник аутентификации или что-то связанное с laravel)

Почему это происходит? Поскольку Laravel еще не инициализирован или мне нужно добавить путь?

ответ

0

Функция auth возвращает экземпляр аутентификатора. Вы можете использовать его вместо фасада Auth для удобства:

echo auth()->user()->id; 
+0

Это не будет работать, потому что класс хелперов и laravels МОК не загружен. – Marco

0

Добавьте следующие строки в server.php, если вы хотите загрузить промежуточное программное. Auth - это промежуточное программное обеспечение, и оно не инициализировано и не загружено.

require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; (set a proper path to your bootstrap)

Смежные вопросы