Reputation: 6248
I've been struggling with this issue for over four hours now. Laravel's Carbon date thing isn't playing nice with Bootstrap or something.
I've been trying to set a mutator for an Articles Model
public function setPublishedAtAttribute($date){
$this->attributes['published_at'] = Carbon::createFromFormat($date);
}
In Articles Model, I've included use Carbon\Carbon;
. At this point, I have a Bootstrap date picker:
<div class="form-group">
{!! Form::label('published_at', 'Publish On:') !!}
{!! Form::input('date', 'published_at', date('Y-m-d'),[ 'class' => 'form-control']) !!}
</div>
My error log throws this:
[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
And a huge stack trace:
#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}
The funny thing is is that:
public function setPublishedAtAttribute($date){
$this->attributes['published_at'] = Carbon::parse($date);
}
Will work, but is completly useless. It will record the date correctly, but it's a current date. I don't recall using Carbon::now()
, so the date must be coming from Boostrap? Even when I set Bootstraps date picker to something else, nothing registers.
I've combed through this thing and wasted enough time on it. Thanks in advance.
EDIT. I have in face discovered that Carbon and Laravel are not the issue and in fact, parse($date)
, despite probably being a little more overhead than createFromFormat
is working. For kicks, I tried
public function setPublishedAtAttribute($date){
$this->attributes['published_at'] = Carbon::parse($date);
$this->attributes['body'] = $date;
}
Just so I could see what it was. Bootstrap is in fact the issue.
Upvotes: 1
Views: 952
Reputation: 40899
The reason you're getting this error is that you're setting the published_at incorrectly. Carbon::createFromFormat() requires the second argument to be a string, yet you're passing a Carbon object.
That's what you can see in the stack trace:
#0 /Users/alexanderkleinhans/Misc/laravel_test/laravel/app/Article.php(17): Carbon\Carbon::createFromFormat('Y-m-d', Object(Carbon\Carbon))
Upvotes: 2