2015-06-06 18 views
6

Ich entwickle ein Projekt mit Laravel 5 und AngularJS. Ich möchte aktivierenLaravel 5 + AngularJS html5Mode

$locationProvider.html5Mode(true); 

und stoppen Sie die Seite neu laden. Die Seite wird nicht neu geladen, wenn ich sie auf false setze und einen Link besuche. mein

Hier ist route.php

Route::get('/', function() { 
    return View::make('index'); 
}); 

Angular Code

app.config(function($routeProvider, $locationProvider) { 
    $routeProvider.when('/', { 
     templateUrl: 'views/feed.html', 
     controller: 'fdController' 
    }).when('/collections', { 
     templateUrl : 'views/collections.html', 
     controller: 'clController' 
    }).otherwise({ 
     redirectTo : '/' 
    }); 

    $locationProvider.html5Mode(true); 
}); 

Wenn ich einen Link html5Mode(false) localhost:8000/#/ -> localhost:8000/#/feed die Seite besuchen nicht

nicht aktualisiert werden, wenn html5Mode(true) und ich besuchen localhost:8000/ -> localhost:8000/feed, Die Seite wird aktualisiert und ich bekomme diese e rror:

Sorry, the page you are looking for could not be found.

+0

Können Sie mehr von Ihrem Angular-Code teilen? Wie ist deine Route konfiguriert und wenn du Dinge wie target = "_ self" in deinem Link hast? Die PHP-Seite ist möglicherweise nicht das Problem – n00b

+0

Ich habe es jetzt – user2595818

+0

Bitte erläutern Sie die Probleme im Detail. Nicht klar, was Sie mit "nicht nachladen" meinen – charlietfl

Antwort

5

Ich änderte meine route.php zu

Route::get('/', function() { 
    return View::make('index'); 
}); 


Route::get('{all}', function() { 
    return View::make('index'); 
}); 

und hat eine Basis <base href="/"> meiner index.php Alles funktioniert jetzt und die Seite nicht aktualisiert.

+0

mit 'Route :: get ('{all}')' ist eine sehr gefährliche Praxis, kann es zu subtilen Bugs führen wie das Anfordern einer Javascript-Datei und das Erhalten Ihrer Indexansicht stattdessen. Sie sollten stattdessen "App :: missing" verwenden, da dies nur auf Routen ausgelöst wird, die noch keine Übereinstimmung mit einer definierten Route oder Ressource haben. – Claies

+1

Ich habe gelesen, dass '' '' App :: fehlt '' '' ist nicht verfügbar in Laravel 5 – user2595818

+0

Ich denke, in diesem Ansatz können Sie 404 Fehlerseiten nicht auflösen. Diese Antwort funktionierte für mich mit ein bisschen Veränderung: http://stackoverflow.com/questions/16569841/reloading-the-page-gives-wrong-get-request-with-angularjs-html5-mode#answer-25961313 – ivahidmontazer