Bonjour,

J'ai un problème avec ma route, au moment ou je clique sur mon lien celui-ci ne me redirige pas vers ma vue "create" mais vers ma vue show.. je n'ai jamais rencontré cette erreur et la j'avoue que je suis un peu perdu.

web.php

Route::resource('products','ProductController');

ProductController.php

/**
* Show the form for creating a new product.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
    $suppliers = Supplier::all();
    $categories = Category::all();
    return view('product.create', compact('suppliers', 'categories'));
}

Layout

<li>
    <a href="{{ URL::to('products/create') }}">
        Produits create
    </a>
</li>

Je suis bien en GET et je redirige bien vers products/create, cependant je ne suis pas redirigé vers mon formulaire de création et j'ai le même problème pour ma route show. Et si je n'ai pas de fonction show dans mon contrôleur, quand je clique sur le lien de création il me met un message d'erreur comme quoi j'ai pas de fonction show. J'ai l'impression qu'il prend mon create comme un paramètre ..

Avez-vous une solution ?

Merci à vous

6 réponses


Bonjour, il suffit se suivre la documentation https://laravel.com/docs/5.6/routing

Route::resource('products','ProductController', ['except' => ['show']]);

Utilise plutôt le helper route dans tes vues.

<li>
    <a href="{{ route('products.create') }}">
        Produits create
    </a>
</li>

Certe mais j'ai besoin de cette route show, je m'en sers justement, si je l'exeptr je ne vais plus pouvoir me servir de cette route pour afficher le détail d'un produit

Utilise plutôt le helper route dans tes vues.


<li>
    <a href="{{ route('products.create') }}">
        Produits create
    </a>
</li>

J'ai déjà essayé mais pas de changement, j'ai fait un test et quoi que je mette dans l'URL :

products/create
products/test
products/x

Tout ce qu'il y a après renvoi vers la fonction show ..

Hello,

Essaies

<a href="{{action('ProductsController@create')}}">
    Products create
</a>

Bonsoir,
Seenok tu as mis un "s" a Product alors que sont controller est

Route::resource('products','ProductController');

Tout dépend les cas, quand tu es sur que ta route ne changera pas de nom alors utilise l'helper routé() si tu n'es pas sûr que le nom de ta route pourrait changer utilise l'helper action() ton contrôler ne changera pas de nom.

C'est question d'organisation et une certaine manière de faire les choses à toi de voir !
Essaye plutôt comme ceci

<li>
    <a href="{{action('ProductController@create')}}">
        Produits create
    </a>
</li>