Ich baue meine erste Laravel App.Versucht, alle Beiträge in der gegebenen Kategorie anzuzeigen - Fehler erhalten
Ich versuche, alle Beiträge in X-Kategorie anzuzeigen.
Meine Routen:
Route::get('/', '[email protected]')->name('home');
Route::get('/{id}/{slug?}', '[email protected]')->name('show');
Route::get('/categories/{category}', '[email protected]')->name('category');
Meine Kategorie Modell:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
public function getRouteKeyName()
{
return 'slug';
}
}
Meine Kategorie Controller:
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'));
}
}
Erste: „Sorry, die Seite, die Sie suchen nicht sein könnte gefunden. "
funktioniert, wenn ich ändern:
Route::get('/{id}/{slug?}', '[email protected]')->name('show');
An:
Route::get('/{post}', '[email protected]')->name('show');
Vielen Dank im Voraus!
vielen dank! Könnten Sie mir mehr darüber erzählen, wie die Regex "/ {id}/{slug?}" Die Wortkategorien von einer anderen Route erfasst hat? Und warum wurde ein {id} einfach so festgelegt? – wdotis
@wdotis Der '{id}' ist ein Regex-Platzhalter, wenn Sie ihn nicht mit 'where' definieren, ist ein Regex wie'. * ', Mit anderen Worten, passen Sie jede einzelne Route an. Wenn Sie die Datei mit dem Where definieren, ändern Sie das '. *' In '[0-9] *', was nur Zahlen bedeutet. – Lloople
du bist großartig! – wdotis