keiwen / cacofony
此包的最新版本(5.4.8)没有可用的许可证信息。
symfony的定制应用程序代码覆盖
5.4.8
2023-09-29 13:33 UTC
Requires
- php: >=7.1
- ext-curl: *
- ext-intl: *
- ext-json: *
- keiwen/utils: >=2.0
- symfony/framework-bundle: ^5.4
Suggests
- braincrafted/bootstrap-bundle: Manage bootstrap, ~2.2
- components/jquery: Include jQuery, ~1.11
- egeloen/ckeditor-bundle: Rich text editor, ~4.0
- fortawesome/font-awesome: Include font-awesome, ~4.0
- knplabs/knp-snappy-bundle: Convert HTML to PDF/images, ~1.0
- liip/imagine-bundle: Image manipulation, ~1.0
- nelmio/api-doc-bundle: Generate API doc from annotations, ^3.6
- oyejorge/less.php: Include less compiler, ~1.5
- symfony/assetic-bundle: Combine js/css ressources, ~2.8
- twbs/bootstrap: Include bootstrap, ~3.0
README
Symfony框架的定制应用程序代码覆盖
*** 已完成Symfony 5.4的合并,但可能遗漏了一些内容 ***
控制器
- 提供父控制器'AppController'
- AppController可以在dev模式下自动转储模板参数:当修改模板时,您可以查看所有可用的参数
- AppController可以使用
return renderTemplate([])自动检索模板(在"{controllerName}/{functionName}.html.twig"中) - AppController可以使用已定义的cookie进行重定向。增加了重定向到引用者或到自身路由的方法
控制器使用特定的Request对象(扩展标准对象),并且应在public/index文件中声明
//use Symfony\Component\HttpFoundation\Request
use Keiwen\Cacofony\Http\Request
如有需要,在kernel中声明其使用
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
限制到角色
此注释可用于检查用户角色。可以用于单个操作或整个控制器。
/**
* @RestrictToRole("admin")
*/
class TestController extends DefaultController
在此示例中,系统将检查用户是否有'ROLE_ADMIN'角色。如果没有,将引发AccessDeniedException。注释中的值不需要大写或带有'role_'前缀。
模板参数
此注释可用于传递给模板的'常量'。它可以在单个操作中定义,也可以用于整个控制器
/**
* @TemplateParameter("section", paramValue="test")
*/
class TestController extends DefaultController
在此示例中,此控制器中的所有操作将自动返回一个值为'test'的'section'参数
翻译
为了翻译目的,您可以设置特定的区域设置(默认'transCode')以显示翻译代码而不是实际翻译的字符串。当从运行中的应用程序进行翻译时很有用。
Twig
过滤器
label在文本末尾添加':'。根据区域设置,它可以添加非换行空格(如在法语中)str_limit限制显示的字符串长度,默认情况下以'...'结尾ucfirst将第一个字母转换为大写
方法
getRoute()返回路由名称hasRole('user')检查当前用户是否有指定的角色。值不需要大写或带有'role_'前缀。
ParamFetcher
控制器方法可以使用ParamFetcher注释来声明路由的请求(get和/或post)参数。参数可以是必需的,有一些要求(如果未满足则出错)或过滤(移除无效字符而不触发错误)。
如果声明为控制器参数,则填充ParamFetcher,当出错时发送400 HTTP响应。
Cacofony包括NelmioApiDocBundle的集成,这些注释
/**
* Action executed if GET request with apiKey parameter.
* variable '$apiKey' in action will be an alphanumerical string.
*
* @Get("/route", name="routeName")
* @GetParam(name="apiKey", description="required key for API access", required=true, filter="scalar")
*/
public function action(ParamFetcher $paramFetcher) {
$apiKey = $paramFetcher->get('apiKey');
}
EntityRegistry
可以保存、删除、分离或复制一个实体或实体列表。每个方法都包含一个可选的提交参数(默认为true)。在控制器中
$this->getEntityRegistry()->saveObject($entity);