Здравствуйте,
Eсть Joomla 2.5.7
в пользовательской части пытаюсь добавить собственную проверку текстового поля на валидность
в отличии от стандартной проверки на пусто должно проверяться что значение не равно еще и определенному слову
это слово прописано в языковых файлах
но похоже что фраза
if(value=="Joomla.JText._('COM_USERS_REGISTER_TESTFIELD')" || value=="")
в js файле так и остается непереведенной (не распарсенной)
может кто сможет подсказать в чем ошибка?
ниже приведены связанные с этим файлы
(я попытался сократить сами файлы и их количество до минимума, если нужна какая-нибудь дополнительная информация то пишите)
файлы:
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/models/forms/testfield.js:
/////////////////////////////////////////////////////////////////
window.addEvent('domready', function() {
document.formvalidator.setHandler('testfield',
function (value)
{
if(value=="Joomla.JText._('COM_USERS_REGISTER_TESTFIELD')" || value=="")
return false;
else
return true;
});
}
);
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/models/forms/testfield.xml:
/////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset addfieldpath="/components/com_users/models/fields">
<field
name="testfield"
type="text"
default="Test Field"
id="testfield"
required="true"
class="validate-testfield"
/>
</fieldset>
</form>
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/models/testfield.php
/////////////////////////////////////////////////////////////////
<?php
defined('_JEXEC') or die;
jimport('joomla.application.component.modelform');
class UsersModelTestfield extends JModelForm
{
public function getForm($data = array(), $loadData = true)
{
$form = $this->loadForm($this->option . '.Testfield', 'Testfield', array('control' => 'jform', 'load_data' => $loadData));
if (empty($form))
{
return false;
}
return $form;
}
public function getScript()
{
return 'components/' . $this->option . '/models/forms/testfield.js';
}
protected function loadFormData()
{
}
}
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
com_users/views/testfield/view.html.php
/////////////////////////////////////////////////////////////////
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.view');
class UsersViewTestfield extends JViewLegacy
{
protected $form;
protected $script;
public function display($tpl = null)
{
try
{
$this->form = $this->get('Form');
$this->script = $this->get('Script');
parent::display($tpl);
$this->setDocument();
}
catch (Exception $e)
{
throw new Exception($e->getMessage());
}
}
protected function setDocument()
{
$document = JFactory::getDocument();
$document->addScript(JURI::root(). $this->script);
JText::script('COM_USERS_REGISTER_TESTFIELD');
}
}
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/views/testfield/tmpl/default.php:
/////////////////////////////////////////////////////////////////
<?php
defined('_JEXEC') or die;
JHtml::_('behavior.framework');//на счет этой строки совсем не уверен но похоже что именно это строка должна отвечать за парсинг(перевод) js файла
JHtml::_('behavior.formvalidation');
?>
<form action="<?php echo JRoute::_('index.php?option=com_users&task=testfield.register');?>" method="post" name="testieldForm" id="testield-form" class="form-validate">
<?php
foreach ($this->form->getFieldset() as $field)
{
?>
<div class="login-fields"><?php echo $field->input; ?></div>
<?php
}
?>
<button class="validate" type="submit"><?php echo JText::_('COM_USERS_REGISTER_SUBMIT'); ?></button>
<input type="hidden" name="task" value="testfield.register">
<input type="hidden" name="option" value="com_users" />
<?php echo JHtml::_('form.token'); ?>
</form>
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/controller.php
/////////////////////////////////////////////////////////////////
тут просто вставка чтоб увидеть нужное представление
.......
.......
case 'login':
$model = $this->getModel($vName);
break;
case 'testfield':
$model = $this->getModel($vName);
break;
.......
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/language/en-GB/en-GB.com_users.ini
/////////////////////////////////////////////////////////////////
тут просто добавил определения для строк
.............
.............
COM_USERS_REGISTER_TESTFIELD="Test Field"
COM_USERS_REGISTER_SUBMIT="Submit"
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
вызывается все это примерно так:
http://localhost/Joomla_2.5.7-Stable-Full_Package/index.php?option=com_users&view=testfield