Приветствую!
Использую компонент Zoo для каталога на сайте. Создал свой элемент используя код (нашел в интернете)
Файл - price.php
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
// register ElementRepeatable class
App::getInstance('zoo')->loader->register('ElementRepeatable', 'elements:repeatable/repeatable.php');
class ElementPrice extends ElementRepeatable implements iRepeatSubmittable {
protected function _hasValue($params = array()) {
$value = $this->get('value');
return $this->_containsEmail($value);
}
public function getText() {
$text = $this->get('value', '');
return empty($text)? $this->get('value', '') : $text;
}
protected function _edit(){
return $this->_editForm();
}
public function _renderSubmission($params = array()) {
return $this->_editForm($params->get('trusted_mode'));
}
protected function _editForm($trusted_mode = true) {
if ($layout = $this->getLayout('edit.php')) {
return $this->renderLayout($layout,
array('trusted_mode' => $trusted_mode
)
);
}
}
public function _validateSubmission($value, $params) {
$values = $value;
$validator = $this->app->validator->create('string', array('required' => false));
$value = $validator->clean($values->get('value'));
$country = $validator->clean($values->get('country'));
$state = $validator->clean($values->get('state'));
return compact( 'value', 'country', 'state');
}
}
Файл edit.php
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
?>
<div>
<?php echo $this->app->html->_('control.text', $this->getControlName('value'), $this->get('value'), 'size="60" title="'.JText::_('value').'" placeholder="'.JText::_('Size').'"'); ?>
<?php echo $this->app->html->_('control.text', $this->getControlName('country'), $this->get('country'), 'size="60" title="'.JText::_('country').'" placeholder="'.JText::_('Comment').'"'); ?>
<?php echo $this->app->html->_('control.text', $this->getControlName('state'), $this->get('state'), 'size="60" title="'.JText::_('state').'" placeholder="'.JText::_('Price').'"'); ?>
</div>
Но при таком виде вообще не работает. А если убрать из файла price.php return $this->_containsEmail($value); и поставить return compact( 'value', 'country', 'state'); то выводить первые значения элементов, а остальные два нет. Я не особо силен в коде, прошу если кто может подсказать решение как исправить, буду очень благодарен)