Laravel 5用户定义的设置只需要调用一次

时间:2016-01-20 09:41:25

标签: php laravel session controller

对于我的个人网站(在线管理),我有一个约会页面,有一些设置,这对我来说,所以我不需要它是安全的。

例如,我可以更改我的视图(显示所有约会或按标签或状态对其进行排序)。我也可以排除状态以确保它没有显示。一切正常,没有问题。

我的问题是这个。我的用户数据库中有一个名为“view”的简单字段。当我进入我的约会页面时,我检查我的“查看”字段的值,如果它是“状态”,例如,在我的控制器中我设置“$ view = status”,以返回我的“状态”视图。这样做有以下简单的检查:

$getUserView = \Auth::user()->view;

    if($getUserView){
        $view = $getUserView;
    }

在我看来,我有一个下拉列表来更改视图。现在,当我进入我的视图时,它显示“状态视图”就好了。但是当我想使用我的下拉列表将视图更改为“默认”或“标签”时,它应该将视图更改为我选择的内容。基本上我想要实现的是,当我第一次进入我的约会页面时,它应该显示我在我的数据库中设置的视图,但只显示了一次。我可以在一个会话中设置它,但我不知道如何实现这一点。任何指针都会有所帮助!

编辑:

仍然在努力解决这个问题,因为我正在使用GET来处理所有事情,也就是下拉列表。例如,当我更改下拉列表中的值时,javascript只会再次调用URL,但是会在下拉列表中选择状态。因此,例如,我的默认URL如下:

http://example.com/appointments/status/default

现在,我在下拉列表中选择“已完成”,将调用以下URL:

http://example.com/appointments/status/completed

在我的约会控制器中,我提出以下内容:

$status = session()->get("status", \Auth::user()->status);

在我的路线中,我有以下内容:

Route::get('appointments/status/{status}', array('as' => 'appointments', 'uses' => 'Appointments\AppointmentsController@index'));

也许我应该在路由中将“{status}”更改为“$ status”并使用put方法设置“$ status”?不确定最好的方法是什么。

1 个答案:

答案 0 :(得分:1)

在会话中使用get方法the second argument is intended for a default value时,如果找不到会话密钥,将返回该方法。

你可以这样做:

$user = \Auth::user();
$view = session()->get("appointments_view", $user->view);

这将在会话中设置视图,如果未设置,则返回$user->view。现在,当用户在下拉列表中选择另一个视图时,只需执行以下操作:

session()->put("appointments_view", $dropDownValue);