Salut,
Je me suis mis à Laravel depuis quelques jours et voilà mon problème
Je suis en train de créer un site avec comme première page, un formulaire de saisie d'email, rien d'autre (c'est de l'intranet, donc peu importe)
Lors de la saisie de l'email, celui-ci est stocké dans un cookie, pour que l'utilisateur n'ait pas à le saisir à chaque fois.
Une fois qu'on a saisie cet email, on arrive sur une nouvelle page avec un formulaire plus complet.
Home, contient le formulaire avec le champ email
Akioform est ce sur quoi on arrive une fois qu'on a saisie l'email
Controller Home
public function index()
{
$email = Cookie::get('email');
return View::make('home.index')->withCookie($email);
}
Vue Home
<form action="{{ URL::to('akioform') }}" method="POST">
<label for="email">Adresse e-mail :</label>
<input type="text" placeholder="Saisissez votre adresse e-mail" value="{{ $email }}" name="email"/>
<input class="button prefix" type="submit" value="Valider"/>
</form>
Controller Akioform
public function index()
{
$valid_email = false;
// D'abord on récupère l'email passé en POST
if(Input::get('email'))
{
// On vérifie son format
$validator = Validator::make(array('email' => Input::get('email')), array('email' => 'required|email'));
if(!$validator->fails())
{
// Créer un cookie pour toujours
$email = Cookie::forever('email', Input::get('email'));
$valid_email = true;
}
}
// Le cookie email est présent ou alors l'email est valide ? On peut afficher la vue
if(Cookie::get('email') || $valid_email)
{
return View::make('akioform.index')->withCookie($email);
}
else
{
// Si le validator ne passe pas, on récupère la première erreur
$erreur = 'Veuillez saisir une adresse email';
if (isset($validator) && $validator->fails())
{
$erreur = $validator->messages()->first('email');
}
$view = Redirect::to('/')->with('erreur', $erreur);
return Response::make($view)->withCookie($email);
}
}
Mes routes
Route::get('/', 'HomeController@index');
Route::any('akioform', 'AkioformController@index');
Mon problème est que le Cookie n'est, soit jamais créé, soit inaccessible.
Je ne comprends pas comment simplement set un cookie, et l'utiliser par la suite.
Merci de votre aide ;)
Bisous
Ok, j'ai réussi, en séparant en deux méthodes distinctes l'action POST de l'email et la page GET akioform.
En gros côté POST j'init le Cookie, ensuite je redirige si c'est ok vers la page en GET, sinon vers la page Home.
Je te conseil plutot de le faire par Session, Session::put('email', 'mon@mail.fr'); et tu y accède via Session::get('email');