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