今、私はスラッグでラーベルのURLをしようとしています。私はすべてのカテゴリを表示する私のメインページを持っています:Laravel 5.4でslugを使ってURLを作成するには?
<div class="panel-body">
@foreach($categories as $category)
<p><a href="{{ URL::to('test/' . $category->slug) }}">{{ $category->name }}</a></p>
@endforeach
</div>
そして今私は特定のカテゴリページに行きたいです。コントローラに
Route::get('/test', '[email protected]')->name('fuel_accounting');
Route::get('/test/{slug}', '[email protected]');
と機能::私はルートを作成し
public function index()
{
$categories = DB::table('fuel_accounting_categories')
->select('id', 'name', 'slug')
->get();
return view('pages.fuel_accounting')->with('categories', $categories);
}
public function element($slug)
{
$category = DB::table('fuel_accounting_categories')
->select('slug')
->where('slug', '=', $slug)
->first();
return view('pages.fuel_accounting_element')->with('category', $category);
}
をそして私は(例:laravel.dev/test/current_category)ページに到達しようとしているとき、それは動作しません。誰かが私にそれをどうやって説明することができますか?
エラー:申し訳ありませんが、あなたが探しているページが見つかりませんでした。 (1/1)NotFoundHttpException
FIXED
ので、 "テスト" クラス名は大文字または小文字の "T" で始まる必要がありますか? – lesssugar
あなたのルートとコントローラの動作は正常に見えます。これは、何らかの理由でLaravelが本当に経路を解決できないことを示唆しています。コントローラー名、アクション名にタイプミスがないか探します。また、他のルートがあなたのスラグルートを上書きしないようにしてください。さらに、 'php artisan route:clear'を実行してみてください。それは恐らく何か明白な意味です:見つけにくい; – lesssugar
'select(" slug ") - > where(" slug "、" = "、$ slug)'は意味がありません。あなたはそれが何であるかを既に知っているときにデータベースを照会するのはなぜですか? – apokryfos