繁体   English   中英

Laravel5 Carbon日期字符串无法正确解析

[英]Laravel5 Carbon date string not correctly parsing

我已经为这个问题苦苦挣扎了四个多小时。 Laravel的Carbon date东西在Bootstrap之类的东西上效果不佳。

我一直在尝试为商品模型设置一个变数器

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

在Articles Model中,我use Carbon\\Carbon; 此时,我有一个Bootstrap日期选择器:

 <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);
}

可以工作,但是完全没有用。 它将正确记录日期,但它是当前日期。 我不记得使用Carbon::now() ,所以日期一定来自Boostrap吗? 即使我将Bootstraps日期选择器设置为其他设置,也没有任何设置。

我已经梳理完这件事,浪费了很多时间。 提前致谢。

编辑。 我发现,Carbon和Laravel并不是问题,实际上是parse($date) ,尽管可能比createFromFormat起作用的开销更大。 为了踢球,我尝试了

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

这样我就可以知道它是什么。 Bootstrap实际上是问题所在。

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

这就是您在堆栈跟踪中看到的内容:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM