我正在为我们的一个客户将joomla1.5网站迁移到joomla3.8。它有一个不受支持的外部组件,我正在尝试为joomla3.8工作。除了administrator中的“编辑”视图外,现在大部分都可以工作了。
目前有3个字段似乎不正常。
首先是名为title和alias的字段,这是一种工作,但不再使用它们已有的值进行前缀填充。它们在xml配置文件中的格式如下:
<fieldset addfieldpath="/administrator/components/com_faqftw/models/fields"
name="essential" >
<fields name="filter">
<field name="id" type="hidden" label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC" size="10" default="0" readonly="true" class="readonly" />
<field name="title" type="text" label="COM_FAQFTW_FIELD_FAQ_NAME_LABEL"
description="COM_FAQFTW_FIELD_FAQ_NAME_DESC" class="inputbox" size="30" required="true" />
<field name="alias" type="text" label="JFIELD_ALIAS_LABEL"
description="JFIELD_ALIAS_DESC" size="30" required="false" />
其次,有一个名为“ordering”的字段,如果在xml中启用,它将抛出一个sql错误。此字段被格式化为自定义字段,并有自己的类扩展jformfield,但禁用它并没有什么区别。这个格式如下:
<field name="ordering" type="Ordering" class="inputbox" label="JFIELD_ORDERING_LABEL"
description="JFIELD_ORDERING_DESC" />
引发的sql错误:
1064 You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'WHERE `catid` = 0 ORDER BY ordering'
at line 3 httpdocs/libraries/joomla/database/driver/mysqli.php:650
所以,我有预感,一些命名约定被引入,这些字段名不再被允许。如果是这样的话,有没有人能给我一些建议,告诉我重命名这些文件的最经得起未来考验的方法,或者给我一些关于这些字段的文档,这些文档比docs.joomla.org网站上的东西更有用。
如果你认为我错了,我也会很高兴听到这样的话,希望有人能给我指点迷津:)
自定义字段php文件:defined('jpath\u base')或die;
/**
* Supports an HTML select list of categories
*
* @package Joomla.Administrator
* @subpackage com_weblinks
* @since 1.6
*/
class JFormFieldOrdering extends JFormField
{
/**
* The form field type.
*
* @var string
* @since 1.6
*/
protected $type = 'Ordering';
/**
* Method to get the field input markup.
*
* @return string The field input markup.
* @since 1.6
*/
protected function getInput()
{
// Initialize variables.
$html = array();
$attr = '';
// Initialize some field attributes.
$attr .= $this->element['class'] ? ' class="'.(string) $this->element['class'].'"' : '';
$attr .= ((string) $this->element['disabled'] == 'true') ? ' disabled="disabled"' : '';
$attr .= $this->element['size'] ? ' size="'.(int) $this->element['size'].'"' : '';
// Initialize JavaScript field attributes.
$attr .= $this->element['onchange'] ? ' onchange="'.(string) $this->element['onchange'].'"' : '';
// Get some field values from the form.
$faqId = (int) $this->form->getValue('id');
// Build the query for the ordering list.
$query = 'SELECT ordering AS value, title AS text' .
' FROM #__faqftw_faq' .
' ORDER BY ordering';
// Create a read-only list (no name) with a hidden input to store the value.
if ((string) $this->element['readonly'] == 'true') {
$html[] = JHtml::_('list.ordering', '', $query, trim($attr), $this->value, $faqId ? 0 : 1);
$html[] = '<input type="hidden" name="'.$this->name.'" value="'.$this->value.'"/>';
}
// Create a regular list.
else {
$html[] = JHtml::_('list.ordering', $this->name, $query, trim($attr), $this->value, $faqId ? 0 : 1);
}
return implode($html);
}
}
暂无答案!
目前还没有任何答案,快来回答吧!