Min*_*ndo 3 symfony twig fosuserbundle symfony4
我想覆盖 FOSUserBundle 的 RegistrationType 的形式,但是在 registration_content.html.twig 模板中我得到了这个错误:
属性“firstname”和方法“firstname()”、“getfirstname()”/“isfirstname()”/“hasfirstname()”或“__call()”都不存在并且在类“Symfony\”中具有公共访问权限组件\表单\表单视图”。
这是我的RegistrationType表格:
class RegistrationType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('firstname');
}
public function getParent() {
return 'fos_user_registration';
}
public function getName() {
return 'app_user_registration';
}
}
Run Code Online (Sandbox Code Playgroud)
fos_user.yaml:
fos_user:
registration:
confirmation:
enabled: true
form:
name: app_user_registration
db_driver: orm
user_class: App\Entity\User
firewall_name: main
from_email:
address: foo@example.com
sender_name: bar@example.com
Run Code Online (Sandbox Code Playgroud)
用户实体:
class User extends BaseUser {
//
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
protected $firstname;
}
Run Code Online (Sandbox Code Playgroud)
registration_content.html.twig:
{{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register', 'id': 'form-sign-up'}}) }}
<div class="form-group form-group--float form-group--centered">
{{ form_widget(form.firstname, {'attr': {'class': 'form-control'}}) }}
<label>{{ 'firstname'|trans }}</label>
<i class="form-group__bar"></i>
</div>
{{ form_end(form) }}
Run Code Online (Sandbox Code Playgroud)
在我的配置服务中,我已经把这个:
app.form.registration:
class: App\Form\RegistrationType
tags:
- { name: form.type, alias: app_user_registration }
Run Code Online (Sandbox Code Playgroud)
Symfony 4.2.3 | Friendsofsymfony/user-bundle v2.1.2
使用我们自己的类覆盖 FOSUserBundle 注册表并删除“用户名”字段作为示例。
从你的 symfony 根目录:
mkdir ./src/Form/Typecp ./vendor/friendsofsymfony/user-bundle/Form/Type/RegistrationFormType.php./config/packages/fos_user.yaml # fos_user.yaml
fos_user:
#... other configurations...
registration:
form:
type: App\Form\Type\RegistrationType
Run Code Online (Sandbox Code Playgroud)
./src/Form/Type/RegistrationFormType.php// Our specific example. edit this as you please...
<?php
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseRegistrationFormType;
class RegistrationFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->remove('username');
}
public function getParent() {
return BaseRegistrationFormType::class;
}
}
Run Code Online (Sandbox Code Playgroud)
注意: 由于我们的示例仅删除单个字段,因此我们删除了不会更改的代码并添加以下方法以保持简单:
public function getParent() {
return BaseRegistrationFormType::class;
}
Run Code Online (Sandbox Code Playgroud)
getParent方法,但它似乎继承了原始方法RegistrationFormType.php,只需添加我们在buildForm方法中所做的更改。| 归档时间: |
|
| 查看次数: |
2601 次 |
| 最近记录: |