如何在Controller方法中访问在Laravel 5.2的blade.php文件中创建的会话?

时间:2016-02-16 23:48:47

标签: php laravel session laravel-5.2

我刚将一个项目从laravel 4.0移到了laravel 5.2。我正在使用泰勒建议的新安装的laravel 5.2。我已成功传输所有文件和Web应用程序正常工作。

我的挑战是我有一个名为page.blade.php的页面,它根据用户选择在会话{{Session :: put(' item',$ itemSelected)}}中存储一些值。我在我的控制器中有一个Session :: get(' item')来接收它并处理一些逻辑。

会话在控制器中返回null但是当我将{{Session :: get(' item')}}添加到page.blade.php时,它显示存储在$ itemSelected中的值。我还观察到在控制器方法中创建的会话可以通过page.blade.php访问,但是page.blade.php创建的会话无法通过控制器方法访问。

这里有点混乱,我需要帮助。在我搬到laravel 5.2之前,这个过程在laravel 4.0中运行良好。

这是我的路线

route::group(['middleware' => ['web']], function () {  

     Route::get('page', 'Website\PageController@mypage');  

 });

Page.blade.php

'''''  
   $itemSelected= 'Page 1';  
   {{Session::put('item' , $itemSelected)}}  
   <a   href="{{action('Website\PageController@mypage')}}">Page 1</a>  

......

我的控制器

<?php  

namespace App\Http\Controllers\Website;  

use Illuminate\Http\Request;  
use Illuminate\Support\Facades\Input;  
use Illuminate\Support\Facades\Auth;  
use App\Http\Requests;  
use App\Http\Controllers\Controller;  
use App\Models\Authuser;  
use View;  
use Redirect;  
use Session;  

return

class PageController extends Controller {  

    public function mypage()  
    {
       ...  
        $selectedPage = Session::get('item');  //this suppose to return "Page 1" but returns null
      ....  
    }
}

2 个答案:

答案 0 :(得分:0)

因为尚未设置,所以在视图中设置它,该视图是在运行该行后创建的。我猜这就是&#39; ...&#39;暗示。

答案 1 :(得分:0)

我无法将此称为此问题的答案,而是另一种完成工作的方式。

从view.blade.php视图中,我将$ itemSelected值作为$ _GET变量传递给url。单击链接时,控制器使用Input :: get(&#39; item&#39;)从请求中选择值。然后将请求中的返回值保存到Session(Session :: put(&#39; item&#39;,$ itemSelected)。这样就完成了任务。