我刚将一个项目从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
....
}
}
答案 0 :(得分:0)
因为尚未设置,所以在视图中设置它,该视图是在运行该行后创建的。我猜这就是&#39; ...&#39;暗示。
答案 1 :(得分:0)
我无法将此称为此问题的答案,而是另一种完成工作的方式。
从view.blade.php视图中,我将$ itemSelected值作为$ _GET变量传递给url。单击链接时,控制器使用Input :: get(&#39; item&#39;)从请求中选择值。然后将请求中的返回值保存到Session(Session :: put(&#39; item&#39;,$ itemSelected)。这样就完成了任务。