标签:
如果读者是从表世界过来的,应该知道怎么通过重载模板来改变第三方Bundle提供的模板。这里我们将重载用户登录页面作为作业留给大家,我们先来重载注册页面,不过为了提供新鲜的知识点,我们这次除了要装修注册页面以外,还要求给注册页面提供验证码。
对于我这种收集bundle的高手,自然少不了推荐验证码相关的bundle:GregwarCaptchaBundle
一如既往安装Bundle
1
2
|
$ composer require gregwar/captcha-bundle
|
一如既往注册Bundle
1
2
3
4
5
6
7
8
9
10
|
// app/appKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Gregwar\CaptchaBundle\GregwarCaptchaBundle(),
);
}
|
好了,准备工作结束。
FOSUserBundle支持使用其他的注册表单。只需要简单配置一下即可
1
2
3
4
5
6
7
|
# app/config/config.yml
fos_user:
# ...
registration:
form:
type: app_reg
|
不过目前type里指定的app_reg
我们还没实现,接下来我们应该创建这个form_type。如果啃过官方文档,应该知道定义一个form_type需要先定义一个FormType类,然后再定义为服务,并且服务的alias一定要和form的getName
方法返回的内容一致。
先定义类:
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
|
<?php
// src/AppBundle/Form/Type/RegType.php
namespace AppBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use FOS\UserBundle\Form\Type\RegistrationFormType;
class RegType extends RegistrationFormType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->add(‘captcha‘, ‘captcha‘, [
‘mapped‘ => false,
]);
}
public function getName()
{
return ‘app_reg‘;
}
}
|
然后是服务:
1
2
3
4
5
6
7
8
9
10
11
12
|
# app/config/services.yml
services:
# ...
app.form.type.reg:
class: AppBundle\Form\Type\RegType
arguments:
- %fos_user.model.user.class%
tags:
-
name: form.type
alias: app_reg
|
让我们访问/register
页面,已经可以看到一个带验证码的表单字段,虽然整个表单丑到没朋友……
按照表世界说的方法找到应该重载的模板
未完待续……
这篇教程自4月9日创建之后,我就一直想把此系列尽快终结掉,为大家献上一个完美的结局,但是并不知道以什么方式去完成,不知道我们的小项目要添加什么样的功能。最近工作也忙,加班是常态,也就一直拖着,但有些事情如果让他一直拖着,可能就真不了了之,还不如畅快一点。
今天我想怎么着此系列也应该有个说法了,我的打算是强行结束掉此教程,但关于Symfony2的探索分享还是会继续。如果大家意犹未尽,可以继续关注我发表在Posts里的其他帖子。此教程是写给刚学习Symfony2的同学入门用的,如果都看完,应该知道Symfony2的大概用法了。后面我将写一些独立的文章,来将Symfony2提供的各种开发解决方案介绍给大家。
谢谢
标签:
原文地址:http://www.cnblogs.com/Jerry-blog/p/4919112.html