2013-09-23 12 views
5

Nasza strona internetowa została zbudowana na bazie niestandardowego frameworka PHP mvc i chcieliśmy powoli konwertować każdy strumień (na przykład: rejestracje) do Laravel.podziel się informacjami na temat sesji z laravel iz powrotem

Zasadniczo istniejący kod i nowy kod za pomocą laravel muszą współistnieć. Ale trafiliśmy na szkopuł, gdzie informacje o sesji ustawione przez laravel nie są dostępne dla innych mvc i vice versa z powodu ich konwencji.

Na przykład niestandardowy mvc używa następującego.

$_SESSION['AUTH']='TRUE'; 

Podczas gdy Laravel używa czegoś takiego.

Session::put('AUTH', 'TRUE'); 

Próbowaliśmy ustawić $ _SESSION ['AUTH'] = 'TRUE' poprzez klasy laravel. Ale nie jesteśmy w stanie uzyskać do niego dostępu, gdy kontrola jest przekazywana do starszego MVC.

Wiem, że jest to skomplikowane i powinienem poczekać, aby przekonwertować całą bazę kodu do Laravel i zakończyć. Ale jesteśmy małą firmą z minimalnymi zasobami. Nie mamy więc luksusu, aby zatrzymać rozwój funkcji i poświęcić czas na ponowne pisanie przy użyciu Laravel Exclusively.

Moje pytanie jest takie. Jak, jeśli jakimkolwiek mechanizmem, możemy to osiągnąć?

Zmienne globalne?

Jakieś inne sugestie?

+0

Hi, czy rozwiązać ten problem? Utknąłem też na tym samym problemie. Chciałbym usłyszeć, jakie podejście podążasz. Z góry dziękuję. – gvsrepins

+0

Opublikował to poniżej. mam nadzieję, że to pomoże. – tven

Odpowiedz

1

Na przykład, jeśli masz następujący folder Konstrukcje

projectFolder/oldMVC

projectFolder/laravel

w oldMvC/main.php włączono następujące

require '../Laravel/bootstrap/autoload.php'; 
require_once '../Laravel/bootstrap/start.php'; 

Po że byliśmy w stanie uzyskać dostęp do sesji i innych zmiennych konfiguracyjnych ustawionych w Laravel z non Laravel MVC.

2

Polecam, aby użyć Laravel's Auth -Klasa tutaj, posłuchaj zdarzenia auth.login i ręcznie ustaw flagę sesji.

Event::listen('auth.login', function($user) 
{ 
    $_SESSION['AUTH']='TRUE'; 
}); 

Jest to najprostszy sposób i wystarczy usunąć detektor zdarzeń po całkowitej migracji do Laravel.

Wiem, że jest to szybkie i brudne, ale po pełnej migracji nie chcesz już używać numeru $_SESSION do zarządzania uwierzytelnianiem;) więc myślę, że powinien to być bardzo dobry most pomiędzy twoim nowym a starym baza kodów.

+0

Witam @ Jan P. W jaki sposób mogę wykorzystać twój kod do integracji ciastek php 2.5 i Laravel 5.1? czy możesz podać więcej szczegółów? lub kroki? suposowanie cakephp zostanie przeniesione do laravel i użytkownik może zalogować się z cakephp i osiągnąć aplikację laravel. –

1

W rzeczywistości tylko wymagając bootstrap/autoload.php i bootstrap/start.php, nie będzie można uzyskać dostępu do prawdziwej sesji Laravel. Nawet już nie dzwoniąc pod numer Application::boot().

Utworzyłem GIST, który umożliwia podzielić sesję laravel i sprawdzić uwierzytelnianie z projektów zewnętrznych:

https://gist.github.com/frzsombor/ddd0e11f93885060ef35

+0

Proszę, w jaki sposób mogę wykorzystać tę istotę do zintegrowania aplikacji CakePHP 2.5 z Laravel 5.1? gdzie twój kod zostanie umieszczony? –

Powiązane problemy