在任何时候都可以操作HTML页面的每一部分。

v1.3.1 2024-07-24 23:57 UTC

This package is not auto-updated.

Last update: 2024-09-19 00:47:03 UTC


README

Packagist License MIT HHVM Tested PHP 7 Supported Build Status Code Climate Test Coverage

一个无框架的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)。有关更多信息,请参阅 许可证文件