2017-03-06 1 views
1

Je dois créer une petite application avec une page d'accueil où l'utilisateur peut remplir un formulaire avec un champ unique. Le champ sera utilisé comme nom d'une pièce et l'utilisateur sera redirigé vers cette page. Tous les autres utilisateurs qui entrent le même nom de chambre seront redirigés vers la même page et pourront discuter avec les utilisateurs dans cette pièce.Créer une route à la convenance de l'utilisateur

Mon problème est que je ne peux pas trouver un moyen avec silex 2 pour que cela fonctionne.

J'ai créé la page d'accueil, et cela semble fonctionner. J'ai une forme et puis entrez le nom de la pièce:

$app->match(
'/', 
function (Request $request) use ($app) { 
    $data = array(
     'room' => 'Name of the room', 
    ); 

    $form = $app['form.factory']->createBuilder(FormType::class, $data) 
     ->add('room', TextType::class) 
     ->getForm(); 

    $form->handleRequest($request); 

    if ($form->isValid()) { 
     $data = $form->getData(); 
     $roomName = $data['room']; 

     //return $app->redirect('/room/' . $roomName); 
     $subRequest = Request::create($app['url_generator']->generate('/room/' . $roomName), 'GET'); 

     return $app->handle($subRequest, \Symfony\Component\HttpKernel\HttpKernelInterface::SUB_REQUEST, false); 
    } 

    return $app['twig']->render('base.twig', array('form' => $form->createView())); 
} 
)->bind('home'); 

Comme vous pouvez le voir, j'ai essayé avec redirect, et avec une sous-requête. Mais les deux cas ne fonctionnent pas, comme je reçois un 404.

Le wich code est supposé attraper la pièce est la suivante:

$app->match(
'/room/{name}', 
function ($name) use ($app) { 
    return $app['twig']->render('room.twig', array('name' => $name)); 
} 
)->bind('room'); 

Est-ce que quelqu'un a une idée sur la façon dont je pourrais faire ce travail?

Merci d'avoir lu. Toute aide serait appréciée.

Répondre

0

J'ai finalement trouvé la solution.

J'ai dû ajouter un fichier .htaccess dans mon dossier Web. La partie importante de ce fichier était la suivante, pour toute personne ayant le même problème:

<IfModule mod_rewrite.c> 
    Options -MultiViews 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule^index.php [L] 
</IfModule>