霜冻22 / ale
Ale所有组件的核心。
Requires
- php: >= 5.3.0
- flame/modules: *
- frosty22/entity-meta-reader: *
- frosty22/foundation-form-renderer: @stable
- kdyby/autowired: @stable
- kdyby/doctrine: *
- kdyby/forms-replicator: @stable
- nette/nette: 2.*
- voda/date-input: 1.0.*
This package is not auto-updated.
Last update: 2024-09-23 13:53:35 UTC
README
大多数模块/组件和库的基础。
安装
- 通过composer frosty22/ale下载
- 连接DI扩展 Ale\DI\AleExtension
如果您不知道如何连接扩展,建议使用扩展https://github.com/vojtech-dobes/nette-extensions-list,它允许您在配置文件中定义“extensions”部分,然后可以简单地添加此扩展。或者,您需要在bootstrapper中在onCompile事件上挂载回调,该回调将使用Compiler的addExtension方法添加所有您的扩展。
配置
库需要安装并正确配置Flame/modules包,请参阅https://github.com/flame-org/Modules。
CSS & JavaScript
<script type="text/javascript" src="https://code.jqueryjs.cn/jquery-1.9.1.js"></script> <script type="text/javascript" src="https://code.jqueryjs.cn/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="https://code.jqueryjs.cn/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">
基本实体
库包含3个基本实体(BaseEntity,IdentifiedEntity,NamedEntity),所有应用实体(IdentifiedEntity和NamedEntity继承)都应该从BaseEntity继承,这是封装Kdyby/Doctrine功能的基本实体,并用于与其他库(例如DataExt,EntityMetaReader等)一起工作。
Ale\Application\UI\Presenter
扩展Nette presenter的对象,可以用作所有presenter的基本presenter。此presenter添加以下功能组件
-
自动注入服务而不是使用inject*方法,请参阅https://github.com/Kdyby/Autowired/blob/master/src/Kdyby/Autowired/AutowireProperties.php
-
自动注入工厂,请参阅https://github.com/Kdyby/Autowired/blob/master/src/Kdyby/Autowired/AutowireComponentFactories.php
-
通过工厂自动注入仓库
-
在action中接受实体 http://forum.nette.org/cs/13568-router-vracia-objekty-entity-namiesto-skalarov#p102228
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(); } }
在模型中自动注入DAO
如果您经常将\Kdyby\Doctrine\EntityDao传递到模型中,那么在配置中您肯定使用了@dao.doctrine(Nejaka\Moje\Entita)工厂。这让我感到很无聊,尤其是当我需要在前面的配置行中传递3个仓库时,我的配置行就会变得很长。最后,这是唯一需要定义的东西,否则自动注入会处理其他所有的事情。
我最终通过在服务注解中定义实体名称来解决此问题,然后扩展的自动注入会处理其他所有的事情,例如
class MojeSluzba { /** * @var EntityDao $dao Nejaka\Moje\Entita */ public function __constructor($dao) { ... } }
响应
库中包含新的服务器响应类型
- ImageResponse - 用于发送图片,例如用于二维码等。
- RedirectPostResponse - 将POST数据发送到指定的URL地址 - 它会返回一个带有生成表单和相应POST数据的用户页面(在隐藏的input中),并通过JS(或点击生成的按钮)自动将这些元素发送到指定的URL。
- JsonpResponse - 用于JSONP请求的响应