Besoin d'aide ?

Laravel, erreur introuvable (Routes)

Avatar de GGamer
GGamer

Salutations à tous, j'ai un petit problème sur mon projet Laravel, je débute sur Laravel donc je suis en train de tester la plupart des fonctionnalités et autres, la j'ai un problèmes de routes visiblement mais je ne comprend pas, voici mes codes : Routes

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
/*Première partie du cour la validation*/
Route::match(['get', 'post'], '/', function () { return view ('email');});
/*Route::post('/', 'ContactController@postForm');*/
/*Route::controller('contact', 'ContactController');*/
/*Les Sessions*/
/*Route::get('photo', 'PhotoController@getForm');
Route::post('photo', 'PhotoGestion@postForm');*/

Controlleur EmailController

<?php
namespace App\Http\Controllers;

use App\Http\Requests\EmailRequest;
use App\Repositories\EmailRepository;

class EmailController extends Controller
{

    public function getForm()
    {
        return view('email');
    }

    public function postForm(
        EmailRequest $request,
        EmailRepository $emailRepository)
    {
        $emailRepository->save($request->input('email'));

        return view('email_ok');
    }

}

J'ai fait un petit test avec les injections, afin d'organiser le code, la page fonctionne, voici les fichiers associé : Dans Repositories, EmailRepository et EmailRepositoryInterface

/*EmailRepository.php*/
<?php

namespace App\Repositories;

use App\Email;

class EmailRepository implements EmailRepositoryInterface
{

    protected $email;

  public function __construct(Email $email)
  {
    $this->email = $email;
  }

  public function save($mail)
  {
    $email = new $this->email;
    $email->email = $mail;
    $email->save();
  }

}
/*EmailRepositoryInterface.php*/

Le problème ne vient pas de la mais pour plus de clarté je met tous le code ont ne sais jamais, de toute façon je débute donc je ne sais pas vraiment, ça ce sont mes vues : email

@extends('template')

@section('contenu')
    <br>
    <div class="col-sm-offset-4 col-sm-4">
    <div class="panel panel-info">
      <div class="panel-heading">Inscription à la lettre d'information</div>
      <div class="panel-body"> 
        {!! Form::open(array('url' => 'email/form')) !!}
          <div class="form-group {!! $errors->has('email') ? 'has-error' : '' !!}">
            {!! Form::email('email', null, array('class' => 'form-control', 'placeholder' => 'Entrez votre email')) !!}
            {!! $errors->first('email', '<small class="help-block">:message</small>') !!}
          </div>
          {!! Form::submit('Envoyer !', array('class' => 'btn btn-info pull-right')) !!}
        {!! Form::close() !!}
      </div>
    </div>
  </div>
@stop

Email_ok

@extends('template')

@section('contenu')
    <br>
  <div class="col-sm-offset-3 col-sm-6">
    <div class="panel panel-info">
      <div class="panel-heading">Inscription à la lettre d'information</div>
      <div class="panel-body"> 
        Merci. Votre adresse a bien été prise en compte.
      </div>
    </div>
  </div>
@stop

La page du formulaire s'affiche mais lorsque je fait envoyer j'ai toujour ce message d'erreur, je pense que j'ai mal fait ma route mais malgré toutes les nomenclatures que j'ai pu essayer rien y fait, quand je fait envoyer toujour le même message :

(1/1) NotFoundHttpException
in RouteCollection.php line 179
at RouteCollection->match(object(Request))
in Router.php line 546
at Router->findRoute(object(Request))
in Router.php line 525
at Router->dispatchToRoute(object(Request))
in Router.php line 511
at Router->dispatch(object(Request))
in Kernel.php line 176
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in ValidatePostSize.php line 27
at ValidatePostSize->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in Pipeline.php line 102
at Pipeline->then(object(Closure))
in Kernel.php line 151
at Kernel->sendRequestThroughRouter(object(Request))
in Kernel.php line 116
at Kernel->handle(object(Request))
in index.php line 53

Si j'arrive à comprendre pourquoi ça ne marche pas je peux vraiment beaucoups avancer, je pense qu'il s'agit d'un problème dans mes routes mais lequel ?

Posté il y a 3 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Ben tes routes avec tous ces commentaires font deux choses: la toute / en GET affiche la vue email et la même route / en POST affiche la vue email. Rien d'autre. Les controllers ne sont pas appelés dans ton code tel qu'il est.

Et quand tu envoie ton formulaire, il essaye de faire un POST sur la route /email/form qui n'est pas définie.

Posté il y a 3 mois
Avatar de GGamer
GGamer

Merci pour ton eclaircissement. Tu pourrais me dire quel serait la bonne route dans mon cas pour appeler le controlleur et aussi la requête associée ?

Posté il y a 3 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Ben tu peux faire une route genre :

Route::post('/email', 'EmailController@postForm'); et tu envoi ton formulaire à l'url /email (avec la methode POST d'ailleurs).

Edit: En ecrivant ça je me suis rendu compte que ton erreur est peut-être même simplement due au faut que tu n'envoi pas en POST. Dans ce cas, il faudrait juste faire Form::open(array('url' => 'email/form', 'method' => 'post')) mais je ne suis pas certain, je ne me sert jamais de cette syntaxte de form:open

Posté il y a 3 mois
Avatar de GGamer
GGamer

Merci, j'ai essayé les deux codes que tu as proposé, il affiche le même message d'erreur.

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::post('/email', 'EmailController@postForm');

Message d'erreur :

(1/1) NotFoundHttpException
in RouteCollection.php line 179
at RouteCollection->match(object(Request))
in Router.php line 546
at Router->findRoute(object(Request))
in Router.php line 525
at Router->dispatchToRoute(object(Request))
in Router.php line 511
at Router->dispatch(object(Request))
in Kernel.php line 176
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in ValidatePostSize.php line 27
at ValidatePostSize->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in Pipeline.php line 102
at Pipeline->then(object(Closure))
in Kernel.php line 151
at Kernel->sendRequestThroughRouter(object(Request))
in Kernel.php line 116
at Kernel->handle(object(Request))
in index.php line 53

Il me rend fou XD je sais pas d'ou vient le problème de mes routes.

Posté il y a 3 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Investigons un peu alors:

  • Si tu inspecte ton formulaire en front c'est quoi l'action et la methode ?
  • Tu es sur quelle version de Laravel ?
  • Tu héberge comment ton application ?
  • Quelle est ta version de PHP ?
Posté il y a 3 mois

Vous ne pouvez pas répondre à ce sujet.