在 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);
}
}
在这里,我想合并两个输入字段,如何将 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);
}
}