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

时间:2016-08-10 03:11:49

标签: php mysql laravel-5 laravel-5.2 laravel-5.1

在这里,我想组合两个输入字段,如何将date_start和我的time组合成laravel中的单个值。 (我的字段类型:datetime)

以下是我的观看脚本:

<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

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

2 个答案:

答案 0 :(得分:2)

正如您已经发布的那样

  

我认为它的权利,但在我的数据库中仍然是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/ Laravel开箱即用。您也可以添加

use Carbon\Carbon;

在最顶层,每次都要跳过写作\ Carbon \ Carbon。

答案 1 :(得分:0)

我认为主要问题是您尝试使用Session#get来尝试阅读发布的表单值,该Request#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); } }

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

例如:

    $(".ui-layout-center").each(function() {
        $(this).parent().layout({
            applyDefaultStyles : true
        });
    });