Php 在创建纵断面时覆盖纵断面-Prestashop

Php 在创建纵断面时覆盖纵断面-Prestashop,php,mysql,prestashop,prestashop-1.6,Php,Mysql,Prestashop,Prestashop 1.6,我想在创建个人资料时添加一个带有个人资料的下拉列表。我已经使用了覆盖,下拉菜单是正确的,并保存在数据库中,但当编辑或查看它不是使“下拉选择” 还有很多未定义名称、未定义类型的警告。我将分享我的代码:- AdminProfilesController.php 在类文件夹中 Profile.php 谁能帮我解决这个问题。我正在使用prestashop 1.6 配置文件结构与默认结构相同。profile_lang结构更改 柱型 id_lang int(10)无符号 id_profile int(10)

我想在创建个人资料时添加一个带有个人资料的下拉列表。我已经使用了覆盖,下拉菜单是正确的,并保存在数据库中,但当编辑或查看它不是使“下拉选择”

还有很多未定义名称、未定义类型的警告。我将分享我的代码:-

AdminProfilesController.php 在类文件夹中

Profile.php 谁能帮我解决这个问题。我正在使用prestashop 1.6

配置文件结构与默认结构相同。profile_lang结构更改 柱型 id_lang int(10)无符号
id_profile int(10)未签名
名称varchar(128)
id_admin int(11)

尝试使用以下命令:

$this->fields_form_override = array(
            array(
                'type' => 'select',
                'label' => $this->l('Access Levels'),
                'name' => 'id_admin_level',   
                'lang' => true,                 
                'col' => '4',                   
                'options' => array(
                    'query' => $values_access,
                    'id' => 'id',
                    'name' => 'name',
                    'val' => 'val'
                    ),
                ),
        );
如果您检查它的使用位置:

// For add a fields via an override of $fields_form, use $fields_form_override
if (is_array($this->fields_form_override) && !empty($this->fields_form_override)) {
     $this->fields_form[0]['form']['input'] = array_merge($this->fields_form[0]['form']['input'], $this->fields_form_override);
}
它会将覆盖字段与$this->fields\u form[0]['form']['input']合并,因此$this->fields\u form\u覆盖需要采用相同的格式


另一种解决方案是将名称更改为
$this->fields\u form\u override
$this->fields\u form
,而不是
父项::\u construct()使用
AdminController::\uu construct()
绕过(忽略)AdminProfile构造函数。

谢谢,警告已消失,但编辑时未被“选中”,不确定是否有帮助,但不需要“lang”=>true。这是一个select而不是输入多语言字段。另外,Profile::AdminLevel()返回什么?创建数组$values\u access时,您有'id'=>$row['id\u admin']。稍后您将使用id\u admin\u级别。要选择此选项,必须在$fields\u value[$input.name]=$option[$input.options.id]Profile::adminLevels()return中为true-将所有$row['id\u admin']和$row['admin\u level\u name']返回到下拉列表中。我更改了这样的代码$this->fields\u form\u override=array(数组('type'=>'select','label'=>$this->l('Access Levels'),'name'=>'id\u admin',/'lang'=>true,'col'=>'4','options'=>array(query'=>$values\u access,'id'=>'id','name'=>'name','val'=>'val'),),lang评论道
$this->fields_form_override = array(
            array(
                'type' => 'select',
                'label' => $this->l('Access Levels'),
                'name' => 'id_admin_level',   
                'lang' => true,                 
                'col' => '4',                   
                'options' => array(
                    'query' => $values_access,
                    'id' => 'id',
                    'name' => 'name',
                    'val' => 'val'
                    ),
                ),
        );
// For add a fields via an override of $fields_form, use $fields_form_override
if (is_array($this->fields_form_override) && !empty($this->fields_form_override)) {
     $this->fields_form[0]['form']['input'] = array_merge($this->fields_form[0]['form']['input'], $this->fields_form_override);
}