velosipedist / beatrix
整形后的Bitrix
Requires
- php: >=5.3.0
- illuminate/support: 4.1.*
- intervention/image: 2.2.*
- league/plates: 3.*
- league/url: 3.*
- siriusphp/validation: 2.1.*
- slim/slim: 2.*
- suin/php-rss-writer: 1.*
- symfony/console: 2.7.*
- symfony/finder: 2.*
Requires (Dev)
- mockery/mockery: 0.9.*
- symfony/css-selector: 2.7.*
- symfony/dom-crawler: 2.7.*
This package is not auto-updated.
Last update: 2024-09-14 20:09:28 UTC
README
Beatrix
尝试打败Bitrix的缺陷性。你不应该知道里面是什么。
我该做什么?
只需从Github的发行版部分下载 beatrix.phar
,或者使用 Phing 自己构建。
php phing-latest.phar
在Bitrix启动时包含 beatrix.phar
(建议在 /bitrix/php_interface/init.php 中,如果不存在则创建)。
如果需要调整某些选项,请使用选项初始化。
// inside of init.php Beatrix::init(array( Beatrix::SETTINGS_TEMPLATES_DIR => $_SERVER['DOCUMENT_ROOT'].'/.tpl' // where to look for templates //... any Slim options are acceptable ));
一些选项将在内部强制执行,其他选项如 Slim 文档 中所述。
没有变化。接下来是什么?
当然。没有魔法(几乎),你必须自己写一些代码 😒。
所有Beatrix实例方法都可通过 Beatrix::app()
获取(它为我们提供了访问应用程序的权限,这是一个经过改进的Slim应用程序),但我们还有一些有用的快捷函数。
目前我们有以下功能
Plates模板引擎
用Plates引擎的强大功能替代了老式的模板切割(使用header.php和footer.php作为输出)。它为我们提供了模板继承、块等。
基本设置
只需在网站文档根目录创建一个 .tpl 文件夹(或使用选项配置任何其他目录)。现在你可以在这里放置任何PHP模板,并单独渲染它们。
Beatrix::app()->render('my/template', ['var1'=>$anyData, /* etc */]); // will seek /.tpl/my/template.php
非切割布局可以这样使用
- 在模板的header.php中只写以下内容
<?php Beatrix::templateHeader();
- 在模板的footer.php中写
<?php Beatrix::templateFooter();
之后,Beatrix将搜索 .tpl/layout/{templateName}
作为布局模板。
但你可以从任何地方在运行时更改布局,只需调用
Beatrix::layout()->setLayout('any/existing/template', ['varToBePassed'=>$var]);
! 任何布局模板 必须 包含
$this->section('content')
调用!
区域
在任意特定模板内部,你可以创建或重写现有命名区域以在布局中稍后打印。
// in any template or even outsid of it Beatrix::layout()->setSection('name', $contents);
如果内容是字符串,它将被作为区域输出写入,如果需要可以稍后重写。
如果内容是回调,它将在布局模板渲染时刻执行。当某些复杂的渲染逻辑可能因某些原因变得无用时,这很有用,并且此区域将被省略而不会产生开销。
Slim实例运行
Beatrix在底层使用经过调整的Slim应用程序实例,以保持所有设置、常见容器功能和字段。
我们还拥有Slim的所有路由功能。这允许使用 不再需要 /urlrewrite.php! 处理任何非静态网站部分。
将 .htaccess
放在所需的网站子目录中,例如 /company/news
RewriteEngine On
#just for case:
RewriteBase /company/news
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
然后在内置的index.php中(保留Bitrix文件的头和尾)
// news/index.php with .htaccess in same dir: Beatrix::app()->get('/', function(){ /* news list */ Beatrix::app()->render('blade/template', ['var' => $val]); }); Beatrix::app()->get('/:category+', function($category){/* news list inside category, optionally nested*/}); Beatrix::app()->get('/:category+/:id', function($category, $id){/* news detail */}); // in the end of page, start listening http requests captured with .htaccess Beatrix::app()->run();
文档 中可用的所有路由功能(get/post等、分组、条件中的正则表达式)。
数据库和信息块
有关iblocks的详细信息,请参阅readme(src/iblock/README.md)
辅助函数
is_ajax()
检查当前http请求是否通过AJAX发送。在Bitrix模板条件中很有用(在PHP条件中设置为空模板,以渲染“纯”应用程序响应)。
slimUrl()
命名路由的URL,支持路径参数和查询参数附加
最后,所有Illuminate/Support甜美的助手函数(array_pluck
、str_finish
等)。
捆绑的RSS构建器
您可以使用这个库来生成RSS数据,而不是使用通用组件:这个库
这就完了么?
是的,目前是这样,但在长远或alpha开发阶段
- 自动菜单生成器,通过结构、信息块层次结构和混合方式
- 发送邮件
- 一些用于日常任务的控制台工具
此外,还有一些正在草拟的子模块(不是Spooky Bitrix模块!)
- RegionManager
- 发送常见问题解答
- “请回电”表单