moszkva/angie

Laravel Angular routing manager. Generates angular routing rules and services from serverside routing rules.

Installs: 20

Dependents: 0

Stars: 2

Watchers: 1

Forks: 1

Language: PHP

v1.1.2 2014-03-29 22:53 UTC

README

Laravel-Angular routing manager. Generates angular routing rules from serverside routing rules and services.

https://packagist.org/packages/moszkva/angie

Features

  • Generates angular routing rules from serverside routing rules
  • Generates angular services for basic data transfer.
  • Namespace resolving in controller's name.

Installation

Installation via composer

{
   "require-dev": {
        "moszkva/angie": "dev-master"
   }
}

Usage

After installation you must register AngieServiceProvider in your config/app.php:

'providers' => array(....,
                     ....,
                     'Moszkva\Angie\AngieServiceProvider'),
'aliases' => array(.....,
                   .....,
                    'Angie' => 'Moszkva\Angie\Facades\Angie'));

and you must register routing rules for angie:

// Angie BEGIN

Route::get('angie/get/routing', function()
{
    return Angie::renderRouterProviderStatment('<YourAppName>', '/angie/test');
});

Route::get('angie/get/services', function()
{
    return Angie::renderServices('<YourAppName>');
});


// Angie END

and you must place these in your index.html after each other angular scripts:

<!--Angie BEGIN-->
<script src="angie/get/routing"></script>
<script src="angie/get/services"></script>
<!--Angie END-->

How works the angie?

  • Generates angular routeprovider statment. Above example:
<YourAppName>.config(['$routeProvider',
    function($routeProvider) {
            $routeProvider
            .when("/angie/test",{"controller":"AngieTestController","templateUrl":"angie/test"})
            .when("/angie/test/create",{"controller":"AngieTestController","templateUrl":"angie/test/create"})
            .when("/angie/test/:test",{"controller":"AngieTestController","templateUrl":"angie/test/' + $routeParams.test + '"})
            .when("/angie/test/:test/edit",{"controller":"AngieTestController","templateUrl":"angie/test/' + $routeParams.test + '/edit"})
            .when("//",{"controller":"TestController","templateUrl":"/"})
            .otherwise({"redirectTo":"/angie/test"})}]);
  • Generates angular services for basic data transfer:
var <YourAppName>Services= angular.module('<YourAppName>Services', ['ngResource']);

AngieTestControllerService.insert(properties);      
AngieTestControllerService.update(properties);
AngieTestControllerService.delete(id);
AngieTestControllerService.show(id);
AngieTestControllerService.list(id, params); // params is optional.

Very important constraint for valid service generation:

  • Laravel routing rules by controller must be unique. Example:

Valid configuration (AnotherAngieTestController is subclass of AngieTestController):

Route::resource('angie/test', 'AngieTestController');
Route::resource('angie/test2', 'AnotherAngieTestController');

Invalid configuration:

Route::resource('angie/test', 'AngieTestController');
Route::resource('angie/test2', 'AngieTestController');

Namespace resolving:

Laravel route rule:

    Route::resource('/test', 'Test\Angie\TestController')

Controller name in generated routprovider statement:

    TestAngieTestController

Service name in generated service statement:

    TestAngieTestControllerService