2015-08-16 47 views
1

我一直在努力解决这个问题超过四个小时了。 Laravel的Carbon date事情对Bootstrap或其他东西不是很好。Laravel5碳日期字符串没有正确解析

我一直在试图建立一个突变为文章型号

public function setPublishedAtAttribute($date){  
    $this->attributes['published_at'] = Carbon::createFromFormat($date); 
} 

在文章型号,我已经包括use Carbon\Carbon;。在这一点上,我有一个引导日期选择器:

<div class="form-group"> 
{!! Form::label('published_at', 'Publish On:') !!} 
{!! Form::input('date', 'published_at', date('Y-m-d'),[ 'class' => 'form-control']) !!} 
</div> 

我的错误日志中抛出这个:

[2015-08-16 22:32:36] production.ERROR: exception 'InvalidArgumentException' with message 'Trailing data' in /Users/alexanderkleinhans/Misc/laravel_test/laravel/vendor/nesbot/carbon/src/Carbon/Carbon  .php:414 

和一个巨大的堆栈跟踪:

#0 /Users/alexanderkleinhans/Misc/laravel_test/laravel/app/Article.php(17): Carbon\Carbon::createFromFormat('Y-m-d', Object(Carbon\Carbon)) 
#1 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(10577): App\Article->setPublishedAtAttribute(Object(Carbon\Carbon)) 
#2 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9615): Illuminate\Database\Eloquent\Model->setAttribute('published_at', Object(Carbon\Carbon)) 
#3 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9553): Illuminate\Database\Eloquent\Model->fill(Array) 
#4 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9665): Illuminate\Database\Eloquent\Model->__construct(Array) 
#5 /Users/alexanderkleinhans/Misc/laravel_test/laravel/app/Http/Controllers/ArticlesController.php(36): Illuminate\Database\Eloquent\Model::create(Array) 
#6 [internal function]: App\Http\Controllers\ArticlesController->store() 
#7 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(8490): call_user_func_array(Array, Array) 
#8 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(8559): Illuminate\Routing\Controller->callAction('store', Array) 
#9 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(8539): Illuminate\Routing\ControllerDispatcher->call(Object(App\Http\Controllers\ArticlesController), Object(Illuminate\Routing\Route), 'store') 
#10 [internal function]: Illuminate\Routing\ControllerDispatcher->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) 
#11 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9196): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
#12 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#13 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9178): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
#14 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(8540): Illuminate\Pipeline\Pipeline->then(Object(Closure)) 
#15 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(8525): Illuminate\Routing\ControllerDispatcher->callWithinStack(Object(App\Http\Controllers\ArticlesController), Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'store') 
#16 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(7500): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'App\\Http\\Contro...', 'store') 
#17 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(7471): Illuminate\Routing\Route->runWithCustomDispatcher(Object(Illuminate\Http\Request)) 
#18 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(7124): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request)) 
#19 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) 
#20 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9196): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
#21 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#22 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9178): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
#23 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(7125): Illuminate\Pipeline\Pipeline->then(Object(Closure)) 
#24 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(7113): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) 
#25 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(7098): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) 
#26 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(2088): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) 
#27 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) 
#28 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9196): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
#29 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(2708): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#30 [internal function]: Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure)) 
#31 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9188): call_user_func_array(Array, Array) 
#32 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(12456): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#33 [internal function]: Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure)) 
#34 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9188): call_user_func_array(Array, Array) 
#35 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(11104): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#36 [internal function]: Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure)) 
#37 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9188): call_user_func_array(Array, Array) 
#38 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(12193): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#39 [internal function]: Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) 
#40 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9188): call_user_func_array(Array, Array) 
#41 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(12132): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#42 [internal function]: Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure)) 
#43 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9188): call_user_func_array(Array, Array) 
#44 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(2758): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#45 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) 
#46 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9188): call_user_func_array(Array, Array) 
#47 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#48 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(9178): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
#49 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(2035): Illuminate\Pipeline\Pipeline->then(Object(Closure)) 
#50 /Users/alexanderkleinhans/Misc/laravel_test/laravel/bootstrap/cache/compiled.php(2018): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) 
#51 /Users/alexanderkleinhans/Misc/laravel_test/laravel/public/index.php(60): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) 
#52 /Users/alexanderkleinhans/Misc/laravel_test/laravel/server.php(21): require_once('/Users/alexande...') 
#53 {main} 

有趣的是的是, :

public function setPublishedAtAttribute($date){ 
    $this->attributes['published_at'] = Carbon::parse($date); 
} 

将工作,但是comp毫无用处。它会正确记录日期,但它是当前日期。我不记得使用Carbon::now(),所以日期必须来自Boostrap?即使当我将Bootstraps日期选择器设置为其他东西时,也没有任何注册。

我梳理了这件事,浪费了足够的时间。提前致谢。

编辑。我已经面对发现碳和Laravel不是问题,事实上,parse($date),尽管可能比createFromFormat开销多一点。对于踢腿,我试过

public function setPublishedAtAttribute($date){  
    $this->attributes['published_at'] = Carbon::parse($date); 
    $this->attributes['body'] = $date; 
} 

只是让我可以看到它是什么。 Bootstrap实际上是问题。

回答

2

您收到此错误的原因是您错误地设置了published_atCarbon :: createFromFormat()要求第二个参数是一个字符串,但是您传递了一个Carbon对象。

那就是你可以在堆栈跟踪看到:

#0 /Users/alexanderkleinhans/Misc/laravel_test/laravel/app/Article.php(17): Carbon\Carbon::createFromFormat('Y-m-d', Object(Carbon\Carbon))