Bonjour,
J'essaie de suivre le tuto sur laravel 10.
j'ai une erreur dans la vue
J'ai récupéré le code source de Grafikart. Je ne vois pas ce qui cloche
<a href="{{ route('admin.property.edit', $property) }}" class="btn btn-primary">Editer</a>
Ce que j'obtiens
Missing required parameter for [Route: admin.property.edit] [URI: admin/property/{property}/edit] [Missing parameter: property].
quand je mets l'id en dur ça marche par exemple :
<a href="{{ route('admin.property.edit', 2) }}" class="btn btn-primary">Editer</a>
Merci de votre aide
J'ai trouvé mon erreur. je suis confus.
En ajoutant les champs que je souhaitais et avant de faire la migration pour créer la table, j'ai malencontreusement effacé le $table->id();
.
....
Schema::create('properties', function (Blueprint $table) {
$table->id();
....
Du coup il ne pouvait pas pointer vers l'élément comme il faut. (J'ai besoin de vacances...)
Pour répondre à ta question j'ai changé la route pour tester en mettant :
Route::prefix('admin')->name('admin.')->group(function () {
Route::resource('property', \App\Http\Controllers\Admin\PropertyController::class)->except(['show'])->names([
'edit' => 'property.edition'
]);
});
Et la ligne dans la vue ressemble à ça du coup :
<a href="{{ route('admin.property.edition', $property) }}" class="btn btn-primary">Editer</a>
Merci de ton aide et je suis désolé de t'avoir pris de ton temps. Par contre échanger avec toi m'a mis sur la piste. Merci encore j'ai appris plein de trucs aujourd'hui.
Hello :)
Alors plusieurs choses:
{property}
à la fin de l'url?Property
et une migration properties
?edit
, en paramètre tu a bien typé le paramètre en Property
? Dans ce genre: public function edit (Property $property)
Et sinon tu peux montrer le code de web.php
, Property.php
et la fonction edit
de ton controller?
Bonjour,
un grand merci pour ton aide
voici ma route dans web.php ::
Route::prefix('admin')->name('admin.')->group(function () {
Route::resource('property', \App\Http\Controllers\Admin\PropertyController::class)->except(['show']);
});
résultat de artisan route concerant property:
GET|HEAD admin/property ................................................................. admin.property.index › Admin\PropertyController@index
POST admin/property ................................................................. admin.property.store › Admin\PropertyController@store
GET|HEAD admin/property/create ........................................................ admin.property.create › Admin\PropertyController@create
PUT|PATCH admin/property/{property} .................................................... admin.property.update › Admin\PropertyController@update
DELETE admin/property/{property} .................................................. admin.property.destroy › Admin\PropertyController@destroy
GET|HEAD admin/property/{property}/edit ................................................... admin.property.edit › Admin\PropertyController@edit
J'ai bien un model Property et j'ai ma migration properties. J'ai déjà des enregistrements dans la table
Voici mon fichier Property.php:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Property extends Model
{
use HasFactory;
protected $fillable = [
'title',
'description',
'surface',
'rooms',
'bedrooms',
'floor',
'price',
'city',
'address',
'postal_code',
'sold',
];
}
mon edit du controller :
public function edit(Property $property)
{
return view('admin.properties.form', [
'property' => $property
]);
}
J'ai vraiment suivi à la lettre en essayant de bien comprendre le tuto.
merci bcp.
De rien ^^
Mmmh bizarre ça m'a l'air bon :/
Essaye de voir si ça ça fonctionne: <a href="{{ route('admin.property.edit', ['property' => $property]) }}" class="btn btn-primary">Editer</a>
Ah petite parenthèse, faut éviter d'utiliser la propriété $fillable
, niveau sécurité c'est mieux d'utiliser Eloquent :p
Merci,
j'avais déjà essayé avec ['property' => $property])
, sans succès là non plus. J'ai la même erreur
($fillable) : merci je vais regarder Eloquent :)
Ah mais je viens de voir, te manque le name dans la route
Route::prefix('admin')->name('admin.')->group(function () {
Route::resource('property', \App\Http\Controllers\Admin\PropertyController::class)->except(['show'])->name('property.edit');
});
J'ai essayé ce que suggère la doc https://laravel.com/docs/10.x/controllers#restful-naming-resource-routes pour nommer toutes les routes comme dans cette exemple :
use App\Http\Controllers\PhotoController;
Route::resource('photos', PhotoController::class)->names([
'create' => 'photos.build'
]);
sans succès non plus. Mystère ce truc
Mmmh je n'ai jamais utilisé resource ^^'
Pour ta solution, dans names, tu as mis admin.property.edit
ou property.edit
? (vus que tu as ajouté admin
dans un préfixe faut pas le mettre)
Ahah ah oui sans id c'est sur qu'il aurait eu du mal à trouver xD
Pas de soucis et avec plaisir ;)