在 Laravel 中将多个字段输入合并为单个值

Combine multiple field input into single value in Laravel

在这里,我想合并两个输入字段,如何将 date_start 和我的 time 合并为 laravel 中的单个值。 (我的字段类型:日期时间)

这是我的查看脚本:

<div class="form-group date" style="float: left;">
    <label for="">Date</label>
    <input class="form-control tanggal" id="date" name="date_start"  
           placeholder="YYYY-MM-DD" type="text" required />
</div>

<div class="form-group time" style="float: right;">
    <label for="">Time</label>
    <input type="time" name="time" placeholder="what time" 
           class="form-control" id="time" />
</div>

这是我的控制器:

$a['date_start'] = Session::get('date_start').  Session::get('time');

我一直在尝试 运行 它,我得到这样的结果数组,

Array ( [date_start] => 2016-08-1001:00 )

我认为它是正确的,但在我的数据库中它仍然是 0000-00-00 00:00:00

我必须对代码进行哪些改进才能实现我的目标?

正如您已经发布的那样

I think its right but in my database its still 0000-00-00 00:00:00

而您给定的输入是 0000-00-0000:00,这完全不同。

您可以使用 Carbon 来简化此操作并确保正确解析日期。

$dateString = Session::get('date_start') . ' ' . Session::get('time') . ':00';
$date = new \Carbon\Carbon($dateString); // optional second parameter for timezone

参考http://carbon.nesbot.com/docs/ Carbon 在 Laravel 中开箱即用。您还可以添加

use Carbon\Carbon;

每次都在最上面跳过写\Carbon\Carbon。

我认为主要问题是您尝试使用 Session#get 读取发布的表单值,它从会话中检索数据,而不是 Request#input 从表单本身检索数据。

要检索表单输入值,请参阅 https://laravel.com/docs/5.2/requests#retrieving-input:

例如:

use Carbon\Carbon;

class MyController extends Controller
{
    public function postMethodName(Request $request)
    {
        $a = [];

        $date_start = $request->input('date_start');
        $time = $request->input('time');

        // TODO: Add validation, sanitize, etc.
        $combined = sprintf('%s %s', $date_start, $time);

        $a['date_start'] = $combined; // new Carbon($combined);
    }
}