AngularJS- und Laravel 4-Routingkonflikt im HTML5-Modus
Ich möchte den # -Hash mit Angularjs von URLs entfernen.$locationProvider.html5Mode(true)
.
Beispiel: Die Adressleiste wird angezeigthttp://localhost/shop
Anstatt vonhttp://localhost/#/shop
.
Alles funktioniert gut, bis ich eine Seite aktualisiere. Wenn ich aktualisiere, wird die folgende Laravel Route (in routes.php definiert) aufgerufen
Route::resource('shop', 'ShoppingController')
nicht die AngularJS Route (definiert in app.js)
$routeProvider.when('/shop', {
templateUrl: 'templates/shop.html',
controller: 'ShoppingController'
});
Mein Code:
routes.php (Laravel Routes)
Route::get('/', function() {
return View::make('index');
});
Route::resource('shop', 'ShoppingController');
app.js (AngularJS-Routen)
var app = angular.module('shoppingApp',['ngRoute','SharedServices']);
app.config(function($routeProvider, $locationProvider) {
$routeProvider.when('/shop', {
templateUrl: 'templates/shop.html',
controller: 'ShoppingController'
});
$routeProvider.otherwise({ redirectTo: '/' });
$locationProvider.html5Mode(true);
});
Meine Verzeichnisstruktur:
Project
/app
/...
/views
-index.php (single page application file)
-routes.php (Laravel routes)
/public
/...
/js
-angular.js
-app.js
-index.php (Laravel index file)
Versuchte Lösungen:
Schreiben Sie die htaccess-Datei neu, sodass alle Anforderungen an index.php umgeleitet werden (die einseitige Anwendungsdatei, von der aus AngularJS das Routing übernehmen würde). Problem: Auf diese Weise wird die Laravel-Route (Route :: resource ('shop', 'ShoppingController'); - für die Interaktion mit der Datenbank erforderlich) für den AngularJS $ http-Dienst unzugänglich:
app.js
app.controller("ShoppingController", function($scope, $http) {
$http.get('/shop', { cache: true}).
success(function(data, status) {
$scope.items = data
}).
error(function(data, status) {
console.log('Status: ' + status);
});
});
Frage: Wie kann ich das Routing-Problem lösen, sodass auf die AngularJS-Route und nicht auf die Laravel-Route zugegriffen wird, wenn ich localhost / shop aktualisiere?