Laravel - Appel Redirect::to() dans la vue

Je suis actuellement en train de travailler sur un cms qui est construit sur le Laravel 4 cadre. Je suis en train de construire un système de plugin, semblable à une Pyro CMS, où le module de vues peuvent être inclus dans une page vue à l'aide de la Lame d'un système de template.

Je suis en train de construire un formulaire de contact plugin que si elles ont été soumises avec succès redirige l'utilisateur vers une url donnée, ou tout simplement de redirection de la page existante.

Le code de mon formulaire de contact classe est:

class Contact {

public static function form($params)
{
    //get params and execute relevant logic here

    $redirect = isset($params['redirect']) ? $params['redirect'] : Request::url();

    $data = Input::all();

    if($data)
    {
        //Run validation and send message here
        return Redirect::to($redirect)
    }

    return View::make('contact_form_view');
}

}

Il y a un contrôleur de la page qui va afficher la page appropriée de la vue en fonction de l'itinéraire utilisé et l'idée est que l'utilisateur peut déposer un formulaire de contact dans un modèle de page, et personnalisez-le en appelant le formulaire de fonction dans le modèle de vue, comme indiqué ci-dessous

<html>
    <head>
    </head>
    <body>

        {{ Contact::form(array(

            'to' => '[email protected]',
            'view'  => 'contact_form_1',

        )) }}

    </body>
</html>

Tout cela fonctionne très bien en dehors de la redirection. Lorsque le formulaire est soumis avec succès et le message envoyé à l'actualisation de la page et affiche le message suivant à la place du formulaire de contact

HTTP/1.0 302 Found Cache-Control: no-cache Date: Tue, 17 Sep 2013 09:14:16 GMT Location: http://localhost:8888/my_initial_route Redirecting to http://localhost:8888/my_new_route.

Environ 2 secondes plus tard, la redirection se met alors en place et le navigateur est redirigé vers quel que soit le parcours de l'utilisateur dans le tableau $params, ou à la page en cours, si aucune redirection n'est fournie, comme dans l'exemple ci-dessus.

Des suggestions quant à pourquoi il agit de cette façon, ainsi que des solutions, serait formidable.

Merci!


EDIT:

Ici est un aperçu des raisons pour lesquelles j'ai pris l'approche ci-dessus, ce qui pourrait aider à la compréhension du problème:

Une exigence de la projet est que les développeurs qui vont finalement utiliser le cms peut créer une quantité indéfinie de pages via le cms panneau de configuration en cliquant sur "Ajouter une page" bouton. L'idée est que nous n'avons pas écrit une nouvelle page de contrôleurs pour chaque nouvelle page que nous voulons créer. Avec ce que j'ai l'esprit j'ai le parcours suivant:

Route::any('{page_slug}/page', array('as' => 'frontend.page', 'uses' => '[email protected]_page'))->where('page_slug',  '[-A-Za-z0-9_-]+');

La display_page fonction allégée fortement, c'est:

public function display_page($slug)
{
    $page = PagesModel::getPageBySlug($slug);
    return View::make($page['view_name']);
}

Avec ce que les utilisateurs peuvent créer une page avec le clic d'un bouton, lui donner un nom et une limace, et l'application peut ensuite afficher cette page et la vue correspondante, définies lors de la création de la page, sans avoir à ajouter de tout nouveaux itinéraires, contrôleurs, etc.

Le problème arrises dans une situation où un utilisateur souhaite inclure un formulaire de contact avec une page. Comment pouvons-nous savoir si ils vont ajouter un formulaire ou pas, quels sont les domaines qu'ils vont utiliser et de validation il faudra? J'ai besoin d'un moyen de pouvoir ajouter une formulaire de contact personnalisé dans n'importe quelle page sans que le développeur n'ait à toucher toucher le cms code. Ma solution à ce problème est l'approche présentée ci-dessus: le développeur gouttes de la balise dans la vue et passe de la fonction de certains paramètres, permettant de "personnaliser" les formes de la fonctionnalité.

La Contact::form() fonction est comme une sorte de contrôleur pour la forme. Il récupère et retourne la vue qui contient le html, le processus de soumission et renvoie succès/les messages d'erreurs en fonction du résultat.

Maintenant, je n'ai pas forcément besoin d'utiliser l'approche ci-dessus, mais j'ai besoin d'une manière de séparer le formulaire de contact du contrôleur le contrôleur de la page et pour les développeurs, pour être en mesure d'ajouter un formulaire à une page sans toucher à la cms backend code.

Toutes les idées sur ce serait génial.

Est le formulaire de contact soumis à un contrôleur? Pouvez-vous montrer le code du contrôleur qui gère l'envoi du formulaire?
vous devez rediriger sur le contrôleur et non sur la vue depuis View::make() affichera quelque chose avant de rediriger.. et en-têtes ont déjà été envoyés.

OriginalL'auteur ArranJacques | 2013-09-17