私は最初のlaravelアプリケーションを構築しています。特定のカテゴリのすべての投稿を表示しようとしています - エラーが発生しました
xカテゴリのすべての投稿を表示しようとしています。
マイルート:
Route::get('/', '[email protected]')->name('home');
Route::get('/{id}/{slug?}', '[email protected]')->name('show');
Route::get('/categories/{category}', '[email protected]')->name('category');
マイカテゴリーモデル:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
public function getRouteKeyName()
{
return 'slug';
}
}
マイカテゴリーコントローラ:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Category;
class CategoriesController extends Controller
{
public function index(Category $category)
{
$posts = $category->posts;
return view('index', compact('posts'));
}
}
を取得:「申し訳ありませんが、あなたが探しているページができませんでした見つかりました。私が変更された場合
作品:
Route::get('/{id}/{slug?}', '[email protected]')->name('show');
へ:
Route::get('/{post}', '[email protected]')->name('show');
事前にありがとうございます!
ありがとう! '/ {id}/{slug?}'正規表現が他のルートから単語カテゴリを取り込む方法についてもっと教えてください。そしてなぜ{id}を定義するだけでそれを修正したのですか? – wdotis
@wdotis '{id}'は正規表現のプレースホルダです。 'where'で定義しないと、'。* 'のような正規表現です。言い換えれば、すべての単一ルートにマッチします。あなたがwhereでファイルを定義すると、その '。* 'は' [0-9] * 'に変更されます。これは、一致する数字だけを意味します。 – Lloople
あなたは素晴らしいです! – wdotis