avris / micrus-annotations
为Micrus框架提供的注释
v4.0.0
2018-01-28 10:08 UTC
Requires
- avris/micrus: ^4.0
- doctrine/annotations: ^1.6
- symfony/finder: ^4.0
README
这是一个将注释转换为框架配置的模块,用于Micrus框架。
安装
运行
composer require avris/micrus-annotations
然后在你的App\App:registerModules
中注册该模块
yield new \Avris\Micrus\Annotations\AnnotationsModule;
@M\Route
路由定义放在config/routing.yml
文件中,如下所示
postList: /post/list -> Post/list
postRead: /post/{int:id}/read -> Post/read
postAdd: /post/add -> Post/form
postEdit: /post/{int:id}/edit -> Post/form
当此模块启用时,你可以直接在控制器中放置这些信息
<?php
namespace App\Controller;
use Avris\Micrus\Controller\Controller;
use Avris\Micrus\Annotations as M;
/**
* @M\Route("/post")
*/
class PostController extends Controller
{
/**
* @M\Route("/list")
*/
public function listAction()
{
// ...
}
/**
* @M\Route("/{int:id}/read")
*/
public function readAction(Post $post)
{
// ...
}
/**
* @M\Route("/add", name="postAdd")
* @M\Route("/{int:id}/edit", name="postEdit")
* @M\Secure(check="canEditPost")
*/
public function formAction(Post $post = null)
{
// ...
}
}
注意
- 需要
use
语句 - 当某个控制器中的所有路由共享相同的前缀时,你可以将其声明为类注释
- 如果没有声明
name
,它将设置为控制器名称
+操作名称
,例如postList
- 可以将多个路由附加到同一控制器。
@M\Secure
类似地,授权配置也可以从config/security.yml
移动到注释中
public:
- { pattern: ^/post/restricted/public$ }
restrictions:
- { pattern: ^/post/restricted }
- { pattern: ^/post/admin, roles: [ROLE_ADMIN] }
- { pattern: ^/post/add$ }
- { pattern: ^/post/(\d+)/edit$, check: canEditPost }
将变为
<?php
namespace App\Controller;
use Avris\Micrus\Controller\Controller;
use Avris\Micrus\Annotations as M;
class PostController extends Controller
{
/**
* @M\Secure
*/
public function restrictedAction()
{
// ...
}
/**
* @M\Secure(public=true)
*/
public function restrictedPublicAction()
{
// ...
}
/**
* @M\Secure(roles={"ROLE_ADMIN"})
*/
public function adminAction()
{
// ...
}
/**
* @M\Secure(check="canEditPost")
*/
public function formAction(Post $post = null)
{
// ...
}
}
扩展
实现Avris\Micrus\Annotations\Loader\AnnotationsLoaderInterface
(标记annotationsLoader
)。
版权
- 作者: Andre Prusinowski (Avris.it)
- 许可证: MIT