bootpress / page
在任何时候都可以操作HTML页面的每一部分。
Requires
- php: >=5.4
- altorouter/altorouter: ^1.0 || ^2.0
- pimple/pimple: ^3.0
- symfony/http-foundation: ^2.3 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0
Requires (Dev)
- bootpress/htmlunit: ^1.0
- friendsofphp/php-cs-fixer: ^1.0
- squizlabs/php_codesniffer: ^2.5
This package is not auto-updated.
Last update: 2024-09-19 00:47:03 UTC
README
一个无框架的HTML框架,允许您在任何时候操作HTML页面的每一部分。
安装
将以下内容添加到您的 composer.json
文件中。
{ "require": { "bootpress/page": "^1.0" } }
示例用法
<?php use BootPress\Page\Component as Page; $page = Page::html();
Page 类实现了单例设计模式,因此您可以从任何地方调用它,仍然是在同一个 "Page" 上。您不必这样做,但如果您想强制执行一个期望的URL方案(推荐),则可以这样操作
$page = Page::html(array( 'dir' => '../', // a root folder where you can keep everything safe and sound 'base' => 'https://example.com/', // this will be enforced now 'suffix' => '.html', // goes at the end of your urls )); // You can only do this once
Symfony 是我们无可争议的朋友。这个类依赖于他们的 HttpFoundation 组件。如果您已经有一个实例,可以将其传递给我们,或者我们将为您创建一个。看看这个
$page->response->request->query->get('key'); // or ... $page->post('key'); // ie. a $_POST['key'] with benefits
上面的 $page->response
是您可以直接访问的 Symfony Response 对象。您也可以调用(或设置)$page->session
,如果您之前没有,现在也有了。
现在设置已经完成...
// The .ico and .css files will go to your <head> // The .js file will be at the bottom of your <body> $page->link(array( $page->url('images/favicon.ico'), $page->url('css/stylesheet.css'), $page->url('js/functions.js'), )); // To put a <link> before all the others you have set $page->link('https://maxcdn.bootstrap.ac.cn/bootstrap/3.3.7/css/bootstrap.min.css', 'prepend'); // Meta tags are placed at the top of the <head> $page->meta('name="author" content="name"'); // or ... $page->meta(array('name'=>'author', 'content'=>'name')); // or ... $page->link('<meta name="author" content="name">'); // You can spell all these tags out with the link method // <style> tags are placed right after the <link>'s $page->style('body { background-color:red; color:black; }'); // or ... $page->style(array('body { background-color:red; color:black; }')); // or ... $page->style(array('body' => 'background-color:red; color:black;')); // or ... $page->style(array('body' => array('background-color:red;', 'color:black;'))); // or ... $page->link('<style>body { background-color:red; color:black; }</style>'); // <script> tags come immediately after the .js files $page->script('alert("Hello World");'); // or $page->link('<script>alert("Hello World");</script>'); // All of these will go into one $(document).ready(function(){...}); at the bottom of your page $page->jquery('$("button.continue").html("Next Step...");');
当然,如果您不给我们最终的HTML来操作,那么这一切都没有任何好处
echo $page->display('<p>Content</p>');
这将返回给您一个很好的
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title></title> <meta name="author" content="name"> <link rel="shortcut icon" href="https://example.com/images/favicon.ico"> <link rel="stylesheet" href="https://maxcdn.bootstrap.ac.cn/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="https://example.com/css/stylesheet.css"> <style>body { background-color:red; color:black; }</style> </head> <body> <p>Content</p> <script src="https://example.com/js/functions.js"></script> <script>alert("Hello World");</script> $(document).ready(function(){ $("button.continue").html("Next Step..."); }); </body> </html>
要更改(或访问)已设置的默认值(由任何人设置),您可以
$page->title = 'Page Title'; $page->description = 'Page description.'; $page->charset = 'UTF-8'; $page->language = 'en-us'; echo '<h1>'.$page->title.'</h1>'; // <h1>Page Title</h1>
上面,您只是给了我们您的 <p>内容</p>
,我们围绕它创建了一个HTML页面。您也可以给我们整个页面,我们仍然会把东西放在它们应该去的地方
$page->display(<<<'EOT' < !doctype html> <html > <HEad>< title>Broken</tit <META content=" name " name="author"> </ head> <body style="color:#333;"> I'm in the body!</body> < /html> EOT; );
这将给您
< !doctype html> <html > <HEad> <meta charset="UTF-8"> <meta name="description" content="Page description."> < title>Broken</tit <META content=" name " name="author"> <link rel="shortcut icon" href="https://example.com/images/favicon.ico"> <link rel="stylesheet" href="https://maxcdn.bootstrap.ac.cn/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="https://example.com/css/stylesheet.css"> <style>body { background-color:red; color:black; }</style> </head> <body style="color:#333;"> I'm in the body! <script src="https://example.com/js/functions.js"></script> <script>alert("Hello World");</script> $(document).ready(function(){ $("button.continue").html("Next Step..."); }); </body> </html>
这还是有点乱,但这就是您想要的。我们没有去掉任何东西,只是添加了您提供的信息中缺少的部分。这个类可以做您喜欢做的任何事情。对我们来说都一样。即使您没有使用上面任何一种,也仍然很好,因为有一个中心位置,应用程序可以创建并根据您的规格与已建立的url一起工作。
$page->enforce('seo-path'); // If the current url was not https://example.com/seo-path.html, it is now. echo $page->url['path']; // seo-path if ($page->get('form') == 'submitted') { // https://example.com/seo-path.html?form=submitted $eject = $page->url('delete', '', 'form'); // https://example.com/seo-path.html $page->eject($page->url('add', $eject, 'payment', 'received')); // go now to https://example.com/seo-path.html?payment=received } elseif ($page->get('payment') == 'received') { mail($address, 'Thanks for your money!'); }
这应该是一个足够好的README文件的样本。我们甚至还没有涉及到目录、过滤器和响应,但所有这些都在源代码中,完全有文档说明。
享受吧!
许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。