【问题标题】:Accessing dates in query string using Laravel使用 Laravel 访问查询字符串中的日期
【发布时间】:2017-01-17 18:29:42
【问题描述】:

在我的 Laravel 项目中,我有一个每周显示数据的仪表板。现在,我需要为用户提供一种在周之间切换的方法,并相应地更新仪表板数据。

理想情况下,我会使用查询参数来实现这一点——例如domain.dev/dashboard?start=2017-01-02&end=2017-01-08。然后,如果用户点击后退按钮,他们可以返回前一周(例如domain.dev/dashboard?start=2016-12-26&end=2017-01-02),以此类推。

这是我目前的路线:

Route::get('/dashboard/weekly', [
    'as' => 'providerDashboardIndex', 'uses' => 'DashboardController@indexWeekly'
]);

下面是对应的控制器:

public function index()
{
    $user = Auth::user();
    $endDate = Carbon::today();
    $startDate = Carbon::today()->subDays(7);

    return view('providers.dashboard.index', compact('user', 'startDate', 'endDate') );
}

当用户最初点击路由时,我如何将这些查询参数添加到我的 URL?我了解创建日期,但不确定如何传递这些日期。

【问题讨论】:

    标签: php laravel laravel-5 php-carbon


    【解决方案1】:

    首先,创建字符串日期:

    $endDate = Carbon::today()->toDateString();
    $startDate = Carbon::today()->subDays(7)->toDateString();
    

    如果你想完全使用/dashboard?start=2017-01-02&end=2017-01-08 URI 格式,dashboard 路由应该是这样的:

    Route::get('dashboard', ....
    

    然后你就可以在视图中创建链接了:

    {{ url('dashboard?start=').$startDate.'&end='.$endDate }}
    

    要在控制器中获取日期,请使用 request() 助手:

    public function showDashboard()
    {
        $startDate = request('startDate');
        $endDate = request('endDate');
    

    【讨论】:

    • ?start=').$startDate.'&end='.$endDate 应该是 ?startDate=').$startDate.'&endDate='.$endDate 控制器才能工作。跨度>
    猜你喜欢
    • 2014-09-04
    • 2017-05-06
    • 1970-01-01
    • 2019-03-08
    • 2013-07-06
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多