2017 © Pedro Peláez
 

library ale

Core of all Ale components.

image

frosty22/ale

Core of all Ale components.

  • Wednesday, December 25, 2013
  • by frosty22
  • Repository
  • 1 Watchers
  • 1 Stars
  • 49 Installations
  • PHP
  • 5 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

ALE

Základ valné většiny modulů / komponent a knihoven., (*1)

Instalace

  1. Stažení přes composer frosty22/ale
  2. Připojení DI rozšíření Ale\DI\AleExtension

Pokud nevíte jakým způsobem připojit rošíření, dopoučuji použít rošíření https://github.com/vojtech-dobes/nette-extensions-list, které umožňuje následně v konfiguračním souboru definovat sekci "extensions", kde pak lze jednoduše přidat toto rošíření. Alternativně je nutné v boostrapu v události onCompile na Configuration zavěsit callback, který bude přidávat všechna Vaše rožšíření pomocí volání metody addExtension na Compiler., (*2)

Konfigurace

Knihovna vyžaduje balíček Flame/modules, který je nutné mít správně nainstalovaný a nakonfigurovaný v boostrapu, viz https://github.com/flame-org/Modules., (*3)

CSS & JavaScript

    
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <script type='text/javascript' src="{$basePath}/js/nette.js"></script>
    <script type='text/javascript' src="{$basePath}/js/jquery-ui-timepicker-addon.min.js"></script>
    <script type='text/javascript' src="{$basePath}/js/dateInput.js"></script>

    <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
    <link rel="stylesheet" type="text/css" href="{$basePath}/css/jquery-ui-timepicker-addon.min.css">
    <link rel="stylesheet" type="text/css" href="{$basePath}/css/dateInput.css">

Základní entity

Knihovna obsahuje 3 základní entity (BaseEntity, IdentifiedEntity, NamedEntity), od BaseEntity by měli dědit všechny entity aplikace (IdentifiedEntity a NamedEntity dědí též) a jedná se o základní entitu, která zapouzdřuje funkčnost z Kdyby/Doctrine, a používá se při práci s ostatními knihovnami (například DataExt, EntityMetaReader, a další)., (*4)

Ale\Application\UI\Presenter

Objekt rozšiřující možnosti Nette presenteru, může být použit jako základní presenter pro všechny Vaše presentery. Tento presenter přidává následující funkční celky:, (*5)

  • Autowiring služeb namísto používání inject* metod, viz https://github.com/Kdyby/Autowired/blob/master/src/Kdyby/Autowired/AutowireProperties.php, (*6)

  • Autowiring továrniček viz https://github.com/Kdyby/Autowired/blob/master/src/Kdyby/Autowired/AutowireComponentFactories.php, (*7)

  • Autowiring repozitářů skrz továrničku, (*8)

  • Přijímání entit v action http://forum.nette.org/cs/13568-router-vracia-objekty-entity-namiesto-skalarov#p102228, (*9)

class TestPresenter extends Ale\Application\UI\Presenter
{

    /**
     * @autowire
     * @var Foo
     */
    public $foo;


    /**
     * @autowire(factory="Ale\DaoFactory", \App\User)
     * @var \Kdyby\Doctrine\EntityDao
     */
    public $userRepository;


    public function actionDefault(User $user, Shop $shop = NULL)
    {
        // příklad získání dané entity pomocí primárního klíče
        // Například {plink Test:default, user => 1, shop => 2}
        var_dump($user); // Entita User s id 1
        var_dump($shop); // Entita Shop s id 2
    }


    public function renderDefault(User $user)
    {
        ...
    }


    public function renderDefault(User $user)
    {
        ...
    }


    /**
      * @return GridoExt\Grido
      */
    protected function createComponentDatagrid($name, IGridoFactory $factory)
    {
        return $factory->create();
    }

}

Autowiring DAO v modelech

Používáte-li často techniku, kdy si předáváte \Kdyby\Doctrine\EntityDao do modelů, tak jistě v konfigu používáte továrničku @dao.doctrine(Nejaka\Moje\Entita). Mě tohle moc nebaví, zvláště, když předávám například už 3 repozitáře v ten řádek konfigu se mi nafoukne. Ve finále je to skoro jediné, co se musí definovat, jinak autowiring se postará o vše ostatní., (*10)

Tohle jsem nakonec vyřešil s tím, že v anotaci služby si definujete název té entity a rozšířený autowiring se postará o ostatní, například:, (*11)

class MojeSluzba {

    /**
     * @var EntityDao $dao Nejaka\Moje\Entita
     */
    public function __constructor($dao)
    {
      ...
    }


}

Reponses

V knihovně jsou obsaženy nové typy odpovědí server:, (*12)

  • ImageResponse - slouží k odeslání obrázku, využitelné například pro QR kódy apod.
  • RedirectPostResponse - odeslání POST dat na danou URL adresu - funguje tak, že vrátí uživateli stránku s vygenerovaným formulářem, a danými POST daty (ve skrytých inputech), a automaticky pomocí JS (či kliknutím na vygenerované tlačítko) odešle tyto elementy na danou URL.
  • JsonpResponse - odpověď pro JSONP požadavky

The Versions