Justin's Words

利用 Composer 为 Laravel 添加外部库

举个例子,这次我们添加的是 Captcha for Laravel 4,一个生成验证码的库。

captcha

安装

给项目根目录下的 composer.json 添加库名和版本号,是否把 minimum-stability 改为 dev 可以根据库的需要进行

1
2
3
4
5
6
7
8
9
{
// ...
"require": {
"laravel/framework": "4.0.*",
"mews/captcha": "dev-master"
},
// ...
"minimum-stability": "dev"
}

修改完成保存文件,并更新包

1
$ composer update

1
$ composer install

添加到自动加载(Providers)中

修改 app/config/app.php

1
2
3
4
'providers' => array(
// ...
'Mews\Captcha\CaptchaServiceProvider',
),

给包提供别名

修改 app/config/app.php

1
2
3
4
'aliases' => array(
// ...
'Captcha' => 'Mews\Captcha\Facades\Captcha',
),

使配置生效

1
$ php artisan config:publish mews/captcha

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// [your site path]/app/routes.php

Route::any('/captcha-test', function()
{

if (Request::getMethod() == 'POST')
{
$rules = array('captcha' => array('required', 'captcha'));
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
echo '<p style="color: #ff0000;">Incorrect!</p>';
}
else
{
echo '<p style="color: #00ff30;">Matched :)</p>';
}
}

$content = Form::open(array(URL::to(Request::segment(1))));
$content .= '<p>' . HTML::image(Captcha::img(), 'Captcha image') . '</p>';
$content .= '<p>' . Form::text('captcha') . '</p>';
$content .= '<p>' . Form::submit('Check') . '</p>';
$content .= '<p>' . Form::close() . '</p>';
return $content;

});