2013-09-23 16 views
5

Il nostro sito web è costruito su un framework php mvc personalizzato e volevamo convertire lentamente ogni flusso (ad esempio: registrazioni) in Laravel.condividere le informazioni sulla sessione con laravel e ritorno

Quindi, in sostanza, il codice esistente e il nuovo codice che utilizza laravel devono coesistere. Ma abbiamo raggiunto un ostacolo, in cui le informazioni sulla sessione impostate da laravel non sono disponibili per gli altri mvc e viceversa a causa delle loro convenzioni.

Ad esempio, il mvc personalizzato utilizza quanto segue.

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

Mentre Laravel utilizza qualcosa come questo.

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

abbiamo cercato di impostare $ _SESSION [ 'AUTH'] = 'true' attraverso classi laravel. Ma non siamo in grado di accedervi quando il controllo viene passato al MVC precedente.

So che è complicato, e dovrei solo aspettare di convertire l'intero codice base in Laravel, e farla finita. Ma siamo una piccola azienda con risorse minime. Quindi non abbiamo il lusso di fermare lo sviluppo di funzionalità e dedicare tempo a riscrivere utilizzando Laravel in esclusiva.

Quindi la mia domanda è questa. Come, se con qualsiasi meccanismo, possiamo ottenere questo?

Variabili globali?

Altri suggerimenti?

+0

Ciao, avete risolto questo problema? Sono bloccato sullo stesso problema pure. Mi piacerebbe sapere quale approccio segui. Grazie in anticipo. – gvsrepins

+0

Inserito sotto. spero che sia d'aiuto. – tven

risposta

1

Per esempio, se avete il seguente cartella Costruzioni

projectFolder/oldMVC

projectFolder/laravel

nel oldMvC/main.php abbiamo inserito il seguente

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

Dopo che siamo stati in grado di accedere alla sessione e ad altre variabili di configurazione impostate in Laravel dal MVC non di Laravel.

2

Si consiglia di utilizzare Laravel Auth -Class qui, ascoltare l'evento auth.login e impostare manualmente il flag di sessione.

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

E 'il modo più semplice e si deve solo eliminare il listener di eventi quando si completamente migrato a laravel.

So che si tratta di una cosa rapida e sporca, ma dopo la migrazione completa non si desidera utilizzare ancora il $_SESSION per gestire l'autenticazione;) quindi penso che questo dovrebbe essere un ottimo ponte tra il tuo nuovo e vecchio codebase.

+0

Ciao @ Jan P. Come posso usare il tuo codice per integrare un cakePHP 2.5 e Laravel 5.1? puoi fornire maggiori dettagli? o passi? suposing cakephp verrà migrato su laravel e un utente può accedere da cakephp e raggiungere un'app di laravel. –

1

In realtà solo richiedendo bootstrap/autoload.php e bootstrap/start.php non sarà possibile accedere alla sessione di Laravel reale. Nemmeno chiamando Application::boot() più.

ho creato un Gist, che permette di condividere la sessione di laravel e verificare l'autenticazione da progetti esterni:

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

+0

Per favore, come posso usare questa nota per integrare un'applicazione cakePHP 2.5 su Laravel 5.1? dove verrà inserito il tuo codice? –

Problemi correlati