我正在使用 Hashid 隐藏 Laravel 5 中资源的 id。
这是路由文件中的路由绑定:
Route::bind('schedule', function($value, $route)
{
$hashids = new Hashids\Hashids(env('APP_KEY'),8);
if( isset($hashids->decode($value)[0]) )
{
$id = $hashids->decode($value)[0];
return App\Schedule::findOrFail($id);
}
App::abort(404);
});
在模型中:
public function getRouteKey()
{
$hashids = new \Hashids\Hashids(env('APP_KEY'),8);
return $hashids->encode($this->getKey());
}
现在这工作正常,资源显示完美,ID 被散列。但是当我去我的创建路线时,它是 404 的 - 如果我删除 App::abort(404) ,那么创建路线会转到没有任何数据的资源“显示”视图......
这是创建路线:
Route::get('schedules/create', [
'uses' => 'SchedulesController@create',
'as' => 'schedules.create'
]);
演出路线:
Route::get('schedules/{schedule}', [
'uses' => 'Schedules Controller@show',
'as' => 'schedules.show'
]);
我还将模型绑定到路线:
Route::model('schedule', 'App\Schedule');
任何想法为什么我的创建视图没有正确显示?索引视图显示正常。