label305/auja

此包已被弃用且不再维护。未建议替代包。

Auja是一个用于与Auja JavaScript前端通信的Web服务开发套件。Auja是一个易于使用、易于实现的用于管理数据的后台界面。

v3.0.0-alpha19 2015-11-20 18:52 UTC

README

已废弃

此仓库将不再维护,并将于2017年开始删除。

关于

Build Status Coverage Status Dependency Status Latest Stable Version Total Downloads Latest Unstable Version

Auja是一个易于使用、易于实现的后台界面。它提供了一个简单直观的方式让您查看和操作数据,让您可以专注于更重要的事情。Auja设计为既用户友好又开发者友好,通过提供工具,您可以在几分钟内设置后台界面。

Auja JavaScript前端提供图形用户界面。为了确定其内容,它依赖于您实现的JSON Web服务。这个仓库反过来,提供面向对象的方法,从PHP应用程序中提供这些JSON消息。

相关仓库

设置

Auja-PHP可在Packagist上找到。通过运行以下命令将Auja-PHP添加到您的依赖中

composer require label305/auja:v3.0.0-alpha5

用法

Auja使用三种主要类型

每个这些类都实现了__toString()方法,该方法返回有效的JSON,由Auja JavaScript实现接受。

主要

Label305\Auja\Main\Main类用于定义Auja的主视图。以下示例将告诉Auja创建一个注销按钮,并添加一个单个模型项。它还添加了一个身份验证表单

$main = new Main();

$main->setTitle('My Application');
$main->setColor(Main::COLOR_MAIN, '#22bcb9');

/* Add a logout button. */
$logoutButton = new Button();
$logoutButton
  ->setTitle($logoutButton)
  ->setTarget('#logout');
$main->addButton($logoutButton);

/* Add a model. */
$item = new Item();
$item
    ->setTitle('Club')
    ->setIcon('tower')
    ->setTarget('/clubs/menu');
$menu->addMenuItem($item);

/* Add an authentication form. */
$authenticationForm = new Form();
$authenticationForm
    ->setAction('#login')
    ->setMethod('POST');

    /* Add a username text field. */
    $usernameTextFormItem = new TextFormItem();
    $usernameTextFormItem
        ->setName('username')
        ->setLabel('Username');
    $authenticationForm->addFormItem($usernameTextFormItem);
    
    /* Add a password field. */
    $passwordFormItem = new PasswordFormItem();
    $passwordFormItem
        ->setName('password')
        ->setLabel('Password');
    $result->addFormItem($passwordFormItem);
    
    /* Add a submit button. */
    $submitFormItem = new SubmitFormItem();
    $submitFormItem->setText('Login');
    $result->addFormItem($submitFormItem);

$main->setAuthenticationForm($authenticationForm);

return $main;

菜单

Label305\Auja\Menu\Menu类用于定义Auja中的菜单。以下示例为Club模型创建了一个菜单

$menu = new Menu();

/* Add a link item to add a club. */
$addMenuItem = new LinkMenuItem();
$addMenuItem
    ->setName('Add')
    ->setTarget('/clubs/create');
$menu->addMenuItem($addMenuItem);

/* Add a spacer. */
$spacerMenuItem = new SpacerMenuItem();
$spacerMenuItem->setName('Clubs');
$menu->addMenuItem($spacerMenuItem);

/* Add a placeholder for showing a list of clubs. */
$resourceMenuItem = new ResourceMenuItem();
$resourceMenuItem->setTarget('/clubs');
$menu->addMenuItem($resourceMenuItem);

return $menu;

如您所见,使用了三种MenuItem类型

  • LinkMenuItem - 表示指向另一个菜单或页面的简单链接;
  • SpacerMenuItem - 表示简单的文本标签;
  • ResourceMenuItem - 表示资源集合。

ResourceMenuItem是实际要显示的项目占位符。当其目标URL被调用时,Auja期望一个包含条目列表的Label305\Auja\Menu\Resource对象

$resource = new Resource();

/* Add Manchester United to the list. */
$item = new LinkMenuItem();
$item
    ->setName('Manchester United')
    ->setTarget('/clubs/1');
$resource->addItem($item);

/* Add FC Bayern Munchen to the list. */
$item = new LinkMenuItem();
$item
    ->setName('FC Bayern München')
    ->setTarget('/clubs/2');
$resource->addItem($item);

/* Provide a url to the next page of clubs. */
$resource->setNextPageUrl('/clubs?page=2');

return $resource;

页面

Label305\Auja\Page\Page定义的页面表示用于查看和修改单个条目的面板。以下示例为Club模型创建了一个编辑页面

/* Retrieve the Club instance. */
$club = ...;

$page = new Page();

/* Add a header with a delete button. */
$pageHeader = new PageHeader();
$pageHeader->setText('Edit Club');

$deleteButton = new Button();
$deleteButton
    ->setText('Delete')
    ->setConfirmationMessage('Are you sure?')
    ->setTarget('/clubs/1')
    ->setMethod('DELETE');
$pageHeader->addButton($deleteButton);

$page->addPageComponent($pageHeader);

/* Add the form. */
$form = new Form();
$form
    ->setAction('/clubs/1')
    ->setMethod('PUT');

    /* Add a name text field.  */
    $nameFormItem = new TextFormItem();
    $nameFormItem
        ->setName('name')
        ->setLabel('Name')
        ->setValue($club->getName());
    $form->addFormItem($nameFormItem);
    
    /* Add a submit button. */
    $submitFormItem = new SubmitFormItem();
    $submitFormItem->setText('Submit');
    $form->addFormItem($submitFormItem);
    
$form->addPageComponent($form);
    
return $page;

开发

要开始为Auja-PHP开发,请执行以下操作

  • 克隆项目;
  • 运行composer install

要运行PhpSpec,请执行bin/phpspec run
如果您想在本地运行代码覆盖率,需要执行以下操作:

  • composer require henrikbjorn/phpspec-code-coverage:~0.2 satooshi/php-coveralls:~0.6
  • printf "\nextensions:\n - PhpSpec\\\\Extension\CodeCoverageExtension" >> phpspec.yml

请勿提交这些更改!

许可协议

版权所有 2014 Label305 B.V.

遵循Apache License 2.0(“许可协议”);
除非遵守许可协议,否则不得使用此文件。
您可以在以下位置获取许可协议副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可协议下分发的软件
按“原样”分发,不提供任何明示或暗示的保证或条件。
有关许可协议下权限和限制的具体语言,请参阅许可协议。
版权所有 2014 Label305 B.V.
遵循Apache License 2.0(“许可协议”);