Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 发布后如何从扩展表单类型捕获/获取字段_Php_Symfony - Fatal编程技术网

Php 发布后如何从扩展表单类型捕获/获取字段

Php 发布后如何从扩展表单类型捕获/获取字段,php,symfony,Php,Symfony,我将(FormType2)作为FormType1的扩展。FormType2的新字段出现,FormType1的字段也出现,这意味着我的扩展类型工作正常。。。但是当我发布表单时。无法检索FormType2的字段。。。我收到了以下错误消息: 属性“nychaCode”和方法“getNychaCode()”、“isNychaCode()”、“hasNychaCode()”、“\uu get()”中的任何一个都不存在,并且在类“Bundle\Model\DiscountCode”中具有公共访问权限 我如何

我将(FormType2)作为FormType1的扩展。FormType2的新字段出现,FormType1的字段也出现,这意味着我的扩展类型工作正常。。。但是当我发布表单时。无法检索FormType2的字段。。。我收到了以下错误消息:

属性“nychaCode”和方法“getNychaCode()”、“isNychaCode()”、“hasNychaCode()”、“\uu get()”中的任何一个都不存在,并且在类“Bundle\Model\DiscountCode”中具有公共访问权限

我如何解决这个问题?谢谢

我的AbstractTypeExtension

namespace MyBundle\Form\Type;
使用MyBundle\Model\DiscountCodeNYCHA;
使用Symfony\Component\Form\AbstractTypeExtension;
使用Symfony\Component\Form\FormBuilderInterface;
类DiscountCodeNYCHAType扩展了AbstractTypeExtension{
公共函数buildForm(FormBuilderInterface$builder、array$options)
{
$builder->add(折扣代码NYCHA::属性代码,null,数组('label'=>'NYCHA租户账号','attr'=>数组('autocomplete'=>'off'));
$builder->add(DiscountCodeNYCHA::ATTRIBUTE_BIRTH_YEAR,null,数组('label'=>'BIRTH YEAR','attr'=>array('autocomplete'=>'off'));
$builder->add(DiscountCodeNYCHA::ATTRIBUTE_BIRTH_DAY,null,数组('label'=>'BIRTH DAY','attr'=>数组('autocomplete'=>'off'));
}
公共函数getExtendedType()
{
返回“edDiscountCode”;
}
}
模型折扣codenycha

名称空间MyBundle\Model;
使用Bundle\Model\DiscountCode;
类DiscountCodeNYCHA扩展了DiscountCode{
常量属性_NYCHA_代码='nychaCode';
常量属性_BIRTH_YEAR='birthcyear';
常量属性_出生日='生日';
私人$nychaCode;
私人$生日;
私人生日$;
/**
*@返回混合
*/
公共函数getNychaCode()
{
返回$this->nychaCode;
}
/**
*@param混合$nychaCode
*/
公共函数setNychaCode($nychaCode)
{
$this->nychaCode=$nychaCode;
}
/**
*@返回混合
*/
公共函数getbirth()
{
返回$this->生日;
}
/**
*@param$mixed生日
*/
公众活动受挫日(生日)
{
$this->birthDay=$birthDay;
}
/**
*@返回混合
*/
公共函数getBirthYear()
{
返回$this->生日;
}
/**
*@param混合$生日
*/
公共职能挫折第一年($生日)
{
$this->birthYear=$birthYear;
}
公共功能是空的{
if(is_null($this->nychaCode)&&is_null($this->birthDay)&&is_null($this->birthDay)){
返回true;
}
}
}
我的模板

使用Bundle\Model\DiscountCode;
使用Symfony\Component\Form\AbstractType;
使用Symfony\Component\Form\FormBuilderInterface;
使用Symfony\Component\options解析器\options解析器接口;
类DiscountCodeType扩展了AbstractType{
函数_u构造(){
}
/**
*{@inheritardoc}
*/
公共函数buildForm(FormBuilderInterface$builder、array$options){
$builder->add(折扣代码::属性\u FIRST\u两个字母\u FIRST\u NAME,null,数组('label'=>'FIRST TWO letter of FIRST NAME','attr'=>array('autocomplete'=>'off'));
$builder->add(折扣代码::属性\u FIRST\u两个字母\u LAST\u NAME,null,数组('label'=>'FIRST TWO letter of LAST NAME','attr'=>数组('autocomplete'=>'off'));
$builder->add(折扣代码::属性最后四位数字,空,数组('label'=>'LAST FOUR DIGITS of Social Security Number','attr'=>数组('autocomplete'=>'off'));
}
公共函数setDefaultOptions(选项ResolvePrinterface$resolver){
父::setDefaultOptions($resolver);
$resolver->setDefaults([
“数据类”=>获取类(新折扣代码()),
“翻译域”=>“折扣代码类型”,
]);
}
/**
*返回此类型的名称。
*
*@return string此类型的名称
*/
公共函数getName(){
返回“edDiscountCode”;
}
}
模型折扣代码:

namespace Bundle\Model;
类别折扣代码{
常量属性\u FIRST\u两个字母\u FIRST\u NAME='firstTwoLettersFirstName';//名字的前两个字母
常量属性_FIRST_TWO LETTERS_LAST_NAME='firstTwoLettersLastName';//姓氏的前两个字母
常量属性_LAST_FOUR DIGITS_SSN='lastfourdigitssn';//社会保险号码的最后四位
私人$firstTwoLettersFirstName;
私人$firstTwoLettersLastName;
私人$LastFourDigitsSN;
/**
*@返回混合
*/
公共函数getFirstTwoLettersFirstName()
{
返回$this->firstTwoLettersFirstName;
}
/**
*@param mixed$firstTwoLettersFirstName
*/
公共函数setFirstTwoLettersFirstName($firstTwoLettersFirstName)
{
$this->firstTwoLettersFirstName=$firstTwoLettersFirstName;
}
/**
*@返回混合
*/
公共函数getFirstTwoLettersLastName()
{
返回$this->firstTwoLettersLastName;
}
/**
*@param混合$firstTwoLettersLastName
*/
公共函数setFirstTwoLettersLastName($firstTwoLettersLastName)
{
$this->firstTwoLettersLastName=$firstTwoLettersLastName;
}
/**
*@返回混合
*/
公共函数getLastFourDigitsSN()
{
返回$this->lastfourdigitssn;
}
/**
*@param mixed$lastfourdigitssn
*/
公共函数setLastFourDigitsSN($LastFourDigitsSN)
{
$this->lastfourdigitssn=$lastfourdigitssn;
}
公共功能是空的{
if(is_null($this->firstTwoLettersFirstName)&&is_null($this->firstTwoLettersLastName)&&is_null($this->lastFourDigitsSN)){
返回true;
}
}
}
更新:我只是更新了setter
public function setDefaultOptions(OptionsResolverInterface $resolver) {

    $resolver->setDefaults([
        'data_class' => get_class(new DiscountCodeNYCHA()),
        'translation_domain' => 'DiscountCodeType',
    ]);
}
parent::setDefaultOptions($resolver);