laravelbook/laravel4-powerpack

Laravel 3 的 HTML、表单和 Str 类的移植版

v0.2 2013-01-22 06:30 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:55:35 UTC


README

将 Laravel 3 的辅助类和方法恢复到 Laravel 4... 所有这些都在一个方便的包中!

Kint debugger

laravel4-powerpack 包含以下辅助类的 Laravel 4 版本

安装

打开 Laravel 4 的 composer.json 文件,并在 require 部分添加 laravelbook/laravel4-powerpack

{
	"require": {
		"laravel/framework": "4.0.*",
		...
		"laravelbook/laravel4-powerpack": "dev-master"
	}
	...
}

运行 composer 的 installupdate 任务,这将使 composer 下载所需的包并设置初始环境

$ composer update

现在你将有一个 composer.jsoncomposer.lock 以及一个包含以下内容的 vendor 文件夹:

vendor/autoload.php
vendor/composer
vendor/laravel
vendor/laravelbook/laravel4-powerpack
...

文件夹 vendor/laravelbook/laravel4-powerpack 包含 Laravel 4 PowerPack 组件

vendor/laravelbook/laravel4-powerpack/src/LaravelBook/Laravel4Powerpack/HTML.php
vendor/laravelbook/laravel4-powerpack/src/LaravelBook/Laravel4Powerpack/Form.php
vendor/laravelbook/laravel4-powerpack/src/LaravelBook/Laravel4Powerpack/Str.php

默认情况下,composer 将自动加载所需的类。如果你遇到任何错误,请运行以下命令强制 composer 重新生成自动加载文件

$ composer dump-autoload

接下来,我们需要在 Laravel 4 应用程序中安装此包。打开 app/config/app.php 文件,并将以下代码追加到 providers 数组中

"LaravelBook\Laravel4Powerpack\Providers\PowerpackServiceProvider",

providers 部分应如下所示

'providers' => array(
    ...
    'LaravelBook\Laravel4Powerpack\Providers\PowerpackServiceProvider',
),

接下来,在 app/config/app.php 文件中添加以下代码到 aliases 数组

'HTML' => 'LaravelBook\Laravel4Powerpack\Facades\HTMLFacade',
'Form' => 'LaravelBook\Laravel4Powerpack\Facades\FormFacade',
'Str' => 'LaravelBook\Laravel4Powerpack\Facades\StrFacade',

aliases 数组现在应如下所示

'aliases' => array(
    ...
	'HTML' => 'LaravelBook\Laravel4Powerpack\Facades\HTMLFacade',
	'Form' => 'LaravelBook\Laravel4Powerpack\Facades\FormFacade',
	'Str' => 'LaravelBook\Laravel4Powerpack\Facades\StrFacade',	
),

Laravel 4 Powerpack 现已准备好在您的 Web 应用程序中使用!

您可以通过运行一些简单的测试代码来验证安装

Route::get('/', function() {
	echo Form::open( '/' );
	echo HTML::image( 'img/hello.jpg' );
	echo Form::text( Str::upper('hello world!') );
	echo Form::close();
	echo dd( $_REQUEST );
});

构建 HTML

内容

实体

在您的视图中显示用户输入时,将所有具有 HTML 语义的字符转换为它们的“实体”表示形式非常重要。

例如,< 符号应转换为其实体表示形式。将 HTML 字符转换为其实体表示形式有助于保护您的应用程序免受跨站脚本攻击

将字符串转换为其实体表示形式

echo HTML::entities('<script>alert(\'hi\');</script>');

脚本和样式表

生成 JavaScript 文件的引用

echo HTML::script('js/scrollTo.js');

生成 CSS 文件的引用

echo HTML::style('css/common.css');

使用给定的媒体类型生成 CSS 文件的引用

echo HTML::style('css/common.css', array('media' => 'print'));

进一步阅读

链接

从 URI 生成链接

echo HTML::link('user/profile', 'User Profile');

生成应使用 HTTPS 的链接

echo HTML::secure('user/profile', 'User Profile');

生成包含额外 HTML 属性的链接

echo HTML::link('user/profile', 'User Profile', array('id' => 'profile_link'));

链接到命名路由

生成到命名路由的链接

echo HTML::route('profile');

生成包含通配符值的命名路由的链接

$url = HTML::route('profile', 'User Profile', array($username));

进一步阅读

链接到控制器操作

生成到控制器操作的链接

echo HTML::action('home@index');

生成包含通配符值的控制器操作的链接

echo HTML::action('user@profile', 'User Profile', array($username));

“邮件至”链接

HTML 类的“mailto”方法会隐藏给定的电子邮件地址,以便它不会被爬虫嗅探。

创建“邮件至”链接

echo HTML::mailto('example@gmail.com', 'E-Mail Me!');

使用电子邮件地址作为链接文本创建“邮件至”链接

echo HTML::mailto('example@gmail.com');

图片

生成 HTML 图片标签

echo HTML::image('img/smile.jpg', $alt_text);

生成包含额外 HTML 属性的 HTML 图片标签

echo HTML::image('img/smile.jpg', $alt_text, array('id' => 'smile'));

列表

从项目数组创建列表

echo HTML::ol(array('Get Peanut Butter', 'Get Chocolate', 'Feast'));

echo HTML::ul(array('Ubuntu', 'Snow Leopard', 'Windows'));

echo HTML::dl(array('Ubuntu' => 'Canonical', 'Windows' => 'Microsoft'));

自定义宏

定义自己的自定义 HTML 辅助类(称为“宏”)很容易。下面是如何工作的。首先,只需使用给定的名称和闭包注册宏

注册 HTML 宏

HTML::macro('myElement', function()
{
	return '<article type="awesome">';
});

现在您可以使用其名称调用您的宏

调用自定义 HTML 宏

echo HTML::myElement();

构建表单

内容

注意:所有在表单元素中显示的输入数据都通过HTML::entities方法进行过滤。

打开表单

打开表单以POST到当前URL

echo Form::open();

使用给定URI和请求方法打开表单

echo Form::open('user/profile', 'PUT');

打开一个POST到HTTPS URL的表单

echo Form::openSecure('user/profile');

在表单打开标签上指定额外的HTML属性

echo Form::open('user/profile', 'POST', array('class' => 'awesome'));

打开接受文件上传的表单

echo Form::openForFiles('users/profile');

打开接受文件上传并使用HTTPS的表单

echo Form::openSecureForFiles('users/profile');

关闭表单

echo Form::close();

CSRF保护

Laravel提供了一种简单的方法来保护您的应用程序免受跨站请求伪造。首先,在用户的会话中放置一个随机令牌。别担心,这是自动完成的。接下来,使用令牌方法生成一个隐藏的表单输入字段,其中包含表单上的随机令牌

生成包含会话CSRF令牌的隐藏字段

echo Form::token();

将CSRF过滤器附加到路由

Route::post('profile', array('before' => 'csrf', function()
{
	//
}));

检索CSRF令牌字符串

$token = Session::getToken();

注意:在使用Laravel CSRF保护功能之前,必须指定会话驱动程序。

进一步阅读

标签

生成标签元素

echo Form::label('email', 'E-Mail Address');

为标签指定额外的HTML属性

echo Form::label('email', 'E-Mail Address', array('class' => 'awesome'));

注意:创建标签后,任何与标签名称匹配的表单元素都将自动接收与标签名称匹配的ID。

文本、文本区域、密码和隐藏字段

生成文本输入元素

echo Form::text('username');

指定文本输入元素的默认值

echo Form::text('email', 'example@gmail.com');

注意:hidden和textarea方法与text方法的签名相同。您只需支付一个价格就能学会三种方法!

生成密码输入元素

echo Form::password('password');

复选框和单选按钮

生成复选框输入元素

echo Form::checkbox('name', 'value');

生成默认选中的复选框

echo Form::checkbox('name', 'value', true);

注意:radio方法与checkbox方法的签名相同。一物两用!

文件输入

生成文件输入元素

echo Form::file('image');

下拉列表

从项目数组生成下拉列表

echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));

生成默认选中的下拉列表

echo Form::select('size', array('L' => 'Large', 'S' => 'Small'), 'S');

按钮

生成提交按钮元素

echo Form::submit('Click Me!');

注意:需要创建按钮元素?尝试使用button方法。它与submit具有相同的签名。

自定义宏

定义自己的自定义表单类辅助程序“宏”非常容易。以下是工作原理。首先,只需使用给定的名称和闭包注册宏

注册表单宏

Form::macro('myField', function()
{
	return '<input type="awesome">';
});

现在您可以使用其名称调用您的宏

调用自定义表单宏

echo Form::myField();

处理字符串

内容

大小写等。

Str类提供了三个方便的方法来处理字符串大小写:upperlowertitle。这些都是PHP函数strtoupper、strtolower和ucwords的更智能版本。更智能,因为如果您的Web服务器上安装了多字节字符串 PHP扩展,它们可以处理UTF-8输入。要使用它们,只需将字符串传递给方法即可

echo Str::lower('I am a string.');
// i am a string.

echo Str::upper('I am a string.');
// I AM A STRING.

echo Str::title('I am a string.');
// I Am A String.

其他方法

length( $string ):获取字符串的长度。

// Get the length of a string
$length = Str::length('Taylor Otwell');

// Get the length of a multi-byte string
$length = Str::length('Τάχιστη')

upperWords( $string ):将每个单词的首字母转换为大写。

单词和字符限制

限制字符串中的字符数

echo Str::limit("Lorem ipsum dolor sit amet", 10);
// Lorem ipsu...

echo Str::limitExact("Lorem ipsum dolor sit amet", 10);
// Lorem i...

// Limit the number of characters and append a custom ending
echo Str::limitExact('Taylor Otwell', 9, '---');

限制字符串中的单词数

echo Str::words("Lorem ipsum dolor sit amet", 3);
// Lorem ipsum dolor...

// Limit the number of words and append a custom ending
echo Str::words('This is a sentence.', 3, '---');

wordwrap( $string, $length ):在给定数量的连续非空白字符后向字符串添加空格。

生成随机字符串

生成随机字母数字字符串

echo Str::random(32);

生成随机字母字符串

echo Str::random(32, 'alpha');

单数和复数

获取单词的复数形式

echo Str::plural('user');
// users

获取单词的单数形式

echo Str::singular('users');
// user

如果指定值大于一,则获取复数形式

echo Str::plural('comment', count($comments));

别名

生成URL友好的slug

return Str::slug('My First Blog Post!');
// my-first-blog-post

使用给定分隔符生成URL友好的slug

return Str::slug('My First Blog Post!', '_');
// my_first_blog_post

大小写转换

ascii( $value ):将字符串转换为7位ASCII。

classify( $value ):将字符串转换为下划线分隔的驼峰式类名。

$class = Str::classify('task_name'); // Returns "Task_Name"

$class = Str::classify('taylor otwell') // Returns "Taylor_Otwell"

camelCase( $value ):将值转换为驼峰式。

字符串搜索

is( $pattern, $value ):确定给定的字符串是否与给定的模式匹配。

endsWith( $haystack, $needle ):确定给定的字符串是否以给定的针(needle)结束。

startsWith( $haystack, $needle ):确定字符串是否以给定的针(needle)开始。

contains( $haystack, $needle ):确定给定的字符串是否包含给定的子串。

其他辅助方法

dd( $value ):输出给定的值。调用此函数后,执行将停止。