Перейти к содержимому


Фотография
- - - - -

Все элементы на карте Яндекс

яндекс

Лучший Ответ SmetDenis , 14 February 2015 - 20:27

Сделайте проверку element на пустоту перед вызовом data() Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 8

#1 Giadastar

Giadastar

Отправлено 07 February 2015 - 18:30

Доброго времени суток!

 

Разрабатываю элемент для отображения всех элементов на карте яндекс.

 

Сейчас возник вопрос, как в самом элементе в шаблоне edit.php получить доступ к параметрам из xml?

 

Пробовал такую конструкцию:

 

$params = $this->app->data->create($params);
$width_default = $params->get('width_default');
 
Не работает...

  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 08 February 2015 - 10:44

Giadastar, у вас в методе edit должна быть примерно следующая конструкция

return self::renderLayout($layout, array(
	'params' => $params, // передаем данные параметров, таким образом можно в layout передать любые данные
));


  • 0
Изображение
 

#3 Giadastar

Giadastar

Отправлено 08 February 2015 - 18:49

Можете подробней пояснить? Не получается... ((

 

Я делаю на основе элемента jbrelatedauto

 

В xml файле я добавил: http://c2n.me/3c3iHyn.png

<param name="width_default" type="text" default="100%" label="Ширина" description="Ширина блока карты по умолчанию" />

И мне нужно получить значение width_default

 

В настройках я задаю значения - http://c2n.me/3c3i9Vc.png

 

В основном файле элемента метод edit сейчас выглядит так - http://c2n.me/3c3ituZ.png

 

Я пробовал писать так 

 

public function edit($params = array())
    {
//return $this->app->html->_('select.booleanlist', $this->getControlName('value'), '', $this->get('value', 1));


if ($layout = $this->getLayout('edit.php')) {
            return $this->renderLayout($layout, $params);
        }


        return null;
    }
 
В файле edit.php :
 
<? 
// no direct access
defined('_JEXEC') or die('Restricted access');


$doc = JFactory::getDocument();
$doc->addScript("http://api-maps.yandex.ru/2.1/?load=package.full&lang=ru_RU&coordorder=longlat");


$params = $this->app->data->create($params);
$width_default = $params->get('width_default');
 
 
Не могу никак получить значение width_default ..

  • 0

#4 Giadastar

Giadastar

Отправлено 10 February 2015 - 17:05

Ребят, ну пните меня - что я делаю не так?


  • 1

#5 Giadastar

Giadastar

Отправлено 10 February 2015 - 21:59

Сама передача понятна. Не работает получение параметров в функции edit:

 

public function edit($params = array())
    {


if ($layout = $this->getLayout('edit.php')) {


$params = $this->app->data->create($params);
$width_default = $params->get('width_default');   // ТУТ ПУСТО...
            return self::renderLayout(
                $layout,
                array(
                    'width_default'   => $width_default
                )
            );
        }


        return null;


    }
 
Причем ниже в этом же файле в функции render все работает:
 
 
public function render($params = array())
    {


        // init vars
        $params = $this->app->data->create($params);
$width_default = $params->get('width_default');
echo "TEST ".$width_default;       // ТУТ ВОЗВРАЩАЕТ РЕЗУЛЬТАТ


        $items = $this->_getRelatedAutoYandex($params);


        $renderer = $this->app->renderer->create('item')->addPath(array($this->app->path->path('component.site:'), $this->_item->getApplication()->getTemplate()->getPath()));
 .......

 

В чем может быть дело?


  • 0

#6 Giadastar

Giadastar

Отправлено 10 February 2015 - 22:36

В общем пока вопрос снимаю, сделал так:

 

В xml перенес в секцию <params>, не в группу render

 

В функции edit заменил на $this->config->get('width_default');

 

Просьба тему пока не закрывать, может еще какие вопросы будут... хоты бы пару дней...


  • 0

#7 Giadastar

Giadastar

Отправлено 14 February 2015 - 10:45

Можно ли как-то отследить, есть ли в $item элемент с определенным идентификатором?

 

Проблема в следующем:

 

В цикле 

 

foreach ($items as $item) {

   $element = $item->getElement($this->identifier);

   $data = (array)$element->data(); - ТУТ ОШИБКА

   ...

}

 

когда попадается элемент, где нет такого идентификатора, то сайт просто "ложится"... Можно ли это как-то обработать?


  • 0

#8 SmetDenis

SmetDenis

Отправлено 14 February 2015 - 20:27   Лучший Ответ

Сделайте проверку element на пустоту перед вызовом data()
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 Giadastar

Giadastar

Отправлено 14 February 2015 - 21:36

И действительно, ведь ларчик просто открывался, чет я тупанул... )) Спасибо.


Сообщение отредактировал Giadastar: 14 February 2015 - 21:45

  • 0





Темы с аналогичным тегами яндекс

Click to return to top of page in style!