2014-07-23 3 views
5

세션에 문제가있어 지속되지 않습니다. 컨트롤러에서세션이 Laravel 4에서 작동하지 않습니다.

나는 편집

public function getEdit($id) 
{ 
    try { 
     $news = News::findOrFail($id); 
     View::share('title', Lang::get('admin.editNews').": ".$news->title); 
     View::share('news', $news); 
     $this->layout->content = View::make('news.editNews'); 
    } catch (Exception $e) { 
     Session::flash('message', Lang::get('admin.noSuchNews')); 
     Session::flash('notif', 'danger'); 
     return Redirect::to("news"); 
    } 
} 

에 대한 기사를로드하는 기능을 가지고 있고 다른 기능을 가지고 -이 플래시 메시지를 표시합니다 인덱스를.

public function getIndex() 
{ 
    var_dump(Session::get('message')); 
} 

세션이 계속 지속되지 않습니다. Session::flash과 함께 작동하지 않으며 Session::put과 작동하지 않습니다.

Session::get('message')은 항상 null입니다.

나는 내가 응용 프로그램 라우팅과 같이했다는 것을 언급해야한다 같아요

Route::controller('news', 'NewsController'); 
+0

가되어

'url' => 'localhost', 

? –

+0

예. 왜냐하면'News :: findOrFail ($ id)'가 실패하지 않는다면 뷰를로드 할 것이고 뉴스가 발견되지 않으면'catch'로 가야하기 때문입니다. 이것은 또한 작동합니다. '$ e-> getMessage()'에코를 시도했습니다. –

+0

'redirect :: to ('news') -> ('message', 'your_message'); – Needpoule

답변

3

그래,이 문제를 해결했습니다.

것은 내가 session.php 파일이

'domain' => '.mydomain.com', 

에 투입했다고한다 그러나 응용 프로그램은 로컬 호스트에 여전히 때문에 내 세션 드라이버로 cookie를 사용하지 않은하지만, 세션과 모든에도 실패했다.

나는
'domain' => '', 

이 변경되면 모든

+0

나는 당신의 해결책을 따라갔습니다. 그러나 나를 위해 일하지 않습니다. – 2plus

0

당신은 http://laravel.com/docs/session#session-drivers에 설명 된 세션 설정을 확인 할 수 있습니다.

가장 쉬운 방법은 세션에 쿠키를 사용하고 브라우저에서 쿠키를 사용하도록 설정하는 것입니다.

세션 저장에 file을 사용하는 경우 app/config/session.php에 정의 된 저장 경로가 쓰기 가능인지 확인하십시오.

+1

데이터베이스 드라이버를 사용할 때마다 모든 요청이 새 행을 만듭니다. 일부 요청은 세션 테이블 –

+1

에 2 개의 행을 작성합니다. 쓰기 가능합니다. 그러나 여전히 작동하지 않습니다. – 2plus

5

이 컨트롤러의 세션을 설정하는 기능의 당신의 반환 상태를 확인 작업을 시작했다. 그것은 간단한 null이더라도 뭔가를 반환하는지 확인하십시오.

나는 지금 막 동일한 문제점을 가지고 있고 이것이 그것을 해결했다.

Route::get('session', function(){ 
    Session::put('current_user', 'Lionel Morrison'); 
    Session::put('user_id', '12345'); 

    var_dump(Session::all()); 
}); 

Route::get('get', function() { 
    var_dump(Session::all()); 
}); 

그러나 내가 컨트롤러를 사용할 때와 같이 컨트롤러가 null을 반환 할 때까지 작동하지 않았습니다.

public function setsession() { 
    Session::put('cat', 'Tom'); 
    Session::put('mouse', 'Jerry'); 

    return null; 
} 

public function getsession() { 
    dd(Session::all()); 
} 
+1

이것이 왜 효과가 있을지 알고 싶습니다. – Juddling

+0

Dunno,하지만 그렇습니다. –

+0

null을 반환하면 문제가 해결되었습니다. 감사 –

2

세션이 올바르게 저장되지 않는 경우 정확하게 저장하려면 Session::save()으로 전화를 걸어보십시오.

0

"Auth :: try()"api 대신 "Auth :: loginUsingId()"api를 사용하여 로그인하려고하면 다른 요청에 대해 세션이 삭제됩니다. 그래서 나는 당신을 추천한다. session.php (config \ session.php \ driver)의 "file"대신 "cookie"드라이버를 사용한다. laravel 4는

0

이다.2

고토 응용 프로그램/설정 디렉토리

편집 app.php`getEdit` 정말`getIndex` 전에 호출 편집 session.php

'driver' => 'file', 
'cookie' => 'sitename_session', 
'domain' => null, 
'secure' => false, 
관련 문제