Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

0 Пользователей и 1 Гость просматривают эту тему.
  • 24 Ответов
  • 2606 Просмотров
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Здравствуйте, в моем справочнике(компонент) есть записи, на главной странице компонента они все отображены ссылками "index.php?option=com_mycomponents&task=mycomponent.edit&id=9" по нажатию мы переходим к редактированию, но у каждой записи разные поля для редактирования(по рубрикам). Шаблон для каждой рубрики я формирую в модели (файл модели прикрепил), В зависимости от $_GET select=1 или 2 или 3... я формирую и вывожу шаблон на добавление.
 
Вопрос, как сделать так, чтобы по нажатию на ссылку(на главной странице) "index.php?option=com_mycomponents&task=mycomponent.edit&id=9"
переход на редактирование записи с уже подставленной переменной $_GET в виде "index.php?option=com_mycomponents&view=mycomponent&layout=edit&select=7&id=9" select берется из базы данных в ячейке rubric_id
 
(default.php представление вывода всех записей на главной странице компонента)

Модель где я прикрепляю шаблоны "case '1' : $this->form='1';"
Спойлер
[свернуть]

Представление главной страницы компонента, где выводится список записей
Спойлер
[свернуть]
« Последнее редактирование: 09.09.2013, 20:53:24 от b2z »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Привет!

А почему бы не подтянуть этот select из rubric_id сразу и не добавлять его к ссылке?
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Привет!

А почему бы не подтянуть этот select из rubric_id сразу и не добавлять его к ссылке?
Привет!

А почему бы не подтянуть этот select из rubric_id сразу и не добавлять его к ссылке?

Во всех компонентах ссылки стоят с задачами "task=mycomponent.edit"
Я думал не будет правильно сразу подставлять прямую ссылку "index.php?option=com_mycomponents&view=mycomponent&layout=edit&select=7&id=9"
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Привет!

А почему бы не подтянуть этот select из rubric_id сразу и не добавлять его к ссылке?

Открыл форму в Chrome скопировал ссылку и вставил в Explorer авторизировался, далее мне написали следующее

"Ошибка
У вас нет прав на доступ к данной странице по прямой ссылке (#12)."
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Во всех компонентах ссылки стоят с задачами "task=mycomponent.edit"
Я думал не будет правильно сразу подставлять прямую ссылку "index.php?option=com_mycomponents&view=mycomponent&layout=edit&select=7&id=9"
Ну не нужно равняться на все компоненты. У Вас другая задача. Если не нравится по ссылкам, может попробовать внутри модели это регулировать. У Вас в модели доступно rubric_id? Что у Вас хранится в $item?
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Ну не нужно равняться на все компоненты. У Вас другая задача. Если не нравится по ссылкам, может попробовать внутри модели это регулировать. У Вас в модели доступно rubric_id? Что у Вас хранится в $item?
Ну не нужно равняться на все компоненты. У Вас другая задача. Если не нравится по ссылкам, может попробовать внутри модели это регулировать. У Вас в модели доступно rubric_id? Что у Вас хранится в $item?

rubric_id могу из базы брать, то есть доступна

Модель я поместил в спойлер,
item в модели:

Код
public function getItem( $id = null )
   {
      if ( $item = parent::getItem( $id ) ) { //если вы получаете через getItem свою запись! если нет то реализовать самому получение
         $item->imgs = json_decode($item->imgs);
      }
      return $item;
   }
« Последнее редактирование: 09.09.2013, 15:38:48 от adebizi »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Код: php
var_dump($item);
и посмотрите, есть ли в объекте свойство rubric_id. Если есть, то даже не надо из базы брать, прямо из объекта возьмете.
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Код: php
var_dump($item);
и посмотрите, есть ли в объекте свойство rubric_id. Если есть, то даже не надо из базы брать, прямо из объекта возьмете.
Да выводит:
Код
object(JObject)#215 (54) {
  ["_errors":protected]=>
  array(0) {
  }
  ["id"]=>
  string(1) "9"
  ["rubric_id"]=>
  string(2) "27"

А куда подставить я не знаю
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Ну так вообще шикарно. Выкидывайте все нафиг из конструктора и перемещайте код в getForm(). И не надо ничего из get получать...

Код: php
$rubric_id = $this->getItem()->rubric_id;
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Сделал:
Код
	public function getForm($data = array(), $loadData = true) 
   {
       // Get the form.
       $form = $this->loadForm('com_yourcomponent.'.$this->form,$this->form,
                               array('control' => 'jform', 'load_data' => $loadData));

       if (empty($form)){return false;}
       $rubric_id = $this->getItem()->rubric_id;
       return $form;
   }

И все убрал из конструктора

Сейчас выдает ошибку: JForm::getInstance(name, *string*)

Это наверное ошибка из-за того что не может найти нужную форму?

Где сейчас указать чтобы он в зависимости от нашей подстановки:

Код
$rubric_id = $this->getItem()->rubric_id;
подставлял нужные формы
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Код: php
public function getForm($data = array(), $loadData = true) 
{
// Устанавливаем форму в зависимости от рубрики.
$this->form = $this->getItem()->rubric_id;

// Get the form.
$form = $this->loadForm(
'com_yourcomponent.' . $this->form, $this->form, array('control' => 'jform', 'load_data' => $loadData)
);

if (empty($form))
{
return false;
}

return $form;
}
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Код: php
public function getForm($data = array(), $loadData = true) 
{
// Устанавливаем форму в зависимости от рубрики.
$this->form = $this->getItem()->rubric_id;

// Get the form.
$form = $this->loadForm(
'com_yourcomponent.' . $this->form, $this->form, array('control' => 'jform', 'load_data' => $loadData)
);

if (empty($form))
{
return false;
}

return $form;
}

А если при сохранении записи выходит ошибка "JForm::getInstance(name, *string*)"
В чем проблема?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Не может найти форму. Я просто не знаю всю логику Вашего кода, но судя по тому, что было в конструкторе у Вас всего 8 форм, а здесь у нас получается $this->form = 27.

Вообщем я Вам дал наводку, Вы уж сами додумайте, как Вам лучше реализовать.
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Не может найти форму. Я просто не знаю всю логику Вашего кода, но судя по тому, что было в конструкторе у Вас всего 8 форм, а здесь у нас получается $this->form = 27.

Вообщем я Вам дал наводку, Вы уж сами додумайте, как Вам лучше реализовать.
Верно, у меня 8 форм, но когда я давал var_dump это была тест запись и там была 27 форма, сейчас у меня только 8 форм, в зависимости от rubric_id сейчас открывает форму отлично, но при сохранении выходит ошибка, запись которую я сейчас проверяю стоит 7 форма.
Контроллер у меня пуст, какие файлы мне показать, чтобы разобраться в чем причина?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Понятно, я к сожалению не встречал такой ошибки при сохранении. Пока непонятно, откуда она возникает. А когда все было в конструкторе, то все работало без ошибок?
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Понятно, я к сожалению не встречал такой ошибки при сохранении. Пока непонятно, откуда она возникает. А когда все было в конструкторе, то все работало без ошибок?

Знаете ли, какой-нибудь компонент, который подобно моему работал с разными формами? Хоть по примеру бы сделал бы
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
у вас проблема где то с логикой, скорее всего при сабмите формы что то не передается, проверяйте почем у вас после сабмита в $rubric_id значение 27
логика работы с формой у вас правильна, а дальше какой то косяк с id формы...
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
на код ваш страшно без слез смотреть )
например это:
Цитировать
$jinput = JFactory::getApplication()->input;
   $sele = $jinput->get->get('select', '1', 'STRING');

    switch($sele){
               case '1' : $this->form='1';
               break;
               case '2' : $this->form='2';
               break;
               case '3' : $this->form='3';
               break;
               case '4' : $this->form='4';
               break;
               case '5' : $this->form='5';
               break;
               case '6' : $this->form='6';
               break;
               case '7' : $this->form='7';
               break;
               case '8' : $this->form='8';
               break;
               default : $this->form='1';
               }

Сокращается до:
Код: php
$jinput = JFactory::getApplication()->input;
$this->form = $jinput->getInt('select', 1);

а это:
Цитировать
   if(!empty($theFiles['name']['img1'])) {
   $img1 = $this->resimages($theFiles['name']['img1'], $theFiles['tmp_name']['img1'], $db_id, 1);
   $data['img1'] = $img1;
   }

   if (!empty($_POST['del_img1'])) {
      $data['img1'] = "";
   }

   if(!empty($theFiles['name']['img2'])) {
   $img2 = $this->resimages($theFiles['name']['img2'], $theFiles['tmp_name']['img2'], $db_id, 2);
   $data['img2'] = $img2;
   }

   if (!empty($_POST['del_img2'])) {
      $data['img2'] = "";
   }

   if(!empty($theFiles['name']['img3'])) {
   $img3 = $this->resimages($theFiles['name']['img3'], $theFiles['tmp_name']['img3'], $db_id, 3);
   $data['img3'] = $img3;
   }

   if (!empty($_POST['del_img3'])) {
      $data['img3'] = "";
   }

   if(!empty($theFiles['name']['img4'])) {
   $img4 = $this->resimages($theFiles['name']['img4'], $theFiles['tmp_name']['img4'], $db_id, 4);
   $data['img4'] = $img4;
   }

   if (!empty($_POST['del_img4'])) {
      $data['img4'] = "";
   }

   if(!empty($theFiles['name']['img5'])) {
   $img5 = $this->resimages($theFiles['name']['img5'], $theFiles['tmp_name']['img5'], $db_id, 5);
   $data['img5'] = $img5;
   }
до:
Код: php
for($i  = 1 ; $i <= 5 ; $i++){
   if(!empty($theFiles['name']['img' . $i])) {
      $data['img' . $i ]  = $this->resimages($theFiles['name']['img' . $i], $theFiles['tmp_name']['img.' . $i], $db_id, $i);
   }
}
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
на код ваш страшно без слез смотреть )
например это:
Сокращается до:
Код: php
$jinput = JFactory::getApplication()->input;
$this->form = $jinput->getInt('select', 1);

а это:до:
Код: php
for($i  = 1 ; $i <= 5 ; $i++){
   if(!empty($theFiles['name']['img' . $i])) {
      $data['img' . $i ]  = $this->resimages($theFiles['name']['img' . $i], $theFiles['tmp_name']['img.' . $i], $db_id, $i);
   }
}

Спасибо, что помогаете.

Моё представление
Код
<?php
// Запрет к прямому доступу. Если кто то попытается обратиться к файлу напрямую, Joomla выдаст пустую страницу.
defined('_JEXEC') or die;


$document = JFactory::getDocument();
$document->addStyleSheet(JURI::base(). 'components/com_mycomponents/css/mycomponent.css');

JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvali
  dation');
JHtml::_('formbehavior.chosen', 'select');

// <!--Сохранение данных из поля редактора, если этого не поствить то ничего работать не будет
// echo $this->form->getField('opisanie')->save();
// где opisanie поле в бд
// -->
?>


<script type="text/javascript">
    Joomla.submitbutton = function(task) {
        if (task == 'mycomponent.cancel' || document.formvalidator.isValid(document.id('mycomponent-form'))) {
            Joomla.submitform(task, document.getElementById('mycomponent-form'));
        }
    }
</script>


<form action="<?php echo JRoute::_('index.php?option=com_mycomponents&view=mycomponent&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="mycomponent-form" class="form-validate" enctype="multipart/form-data">


<?php if(!empty( $this->sidebar)): ?>
  <div id="j-sidebar-container" class="span2">
    <?php echo $this->sidebar; ?>
  </div>
  <div id="j-main-container" class="span10">
<?php else : ?>
  <div id="j-main-container">
<?php endif;?>


<div class="span10 form-horizontal">   
<fieldset class="adminform">

<!--Вывод данных из бд в форму + вкладки навигации в данном случае она одна-->
<ul class="nav nav-tabs">
<li class="active"><a href="#details" data-toggle="tab"><?php echo empty($this->item->id)? JText::_('COM_MYCOMPONENT_DETALIS') : JText::sprintf('COM_MYCOMPONENT_DETALIS', $this->item->id); ?></a></li>     
</ul>

<div class="control-group" style="margin-bottom: 5px;">



 
  <?php
  $rr=12;
  foreach($this->form->getFieldset() as $field):
  if($rr == 12) {
  // echo "<pre>";
  // print_r($field);
  // echo "</pre>";
  ++$rr;
  }
  ?>
  <?php   echo '<div class="control-group" style="margin-bottom: 5px;">';
      if (!$field->hidden): ?>
  <?php echo '<div class="control-label">'.$field->label.'</div>'; ?>
  <?php endif; ?>
  <?php echo '<div class="controls">'.$field->input.'</div>
        </div>'; ?>
  <?php endforeach; ?>

</fieldset>


<?php

for ($i=1; $i < 6; $i++) {
  $tmp = 'img'.$i;
  $tmp_a = $this->form->getValue($tmp);
  if(!empty($tmp_a)) {
    $tmp_a = str_replace(".jpg", "_100x100.jpg", $tmp_a);
    echo "<p style='float:left;margin-right:20px;'><img src='".JURI::root()."images/thumbs/".$tmp_a."'><br>Удалить <input type='checkbox' name='del_img".$i."' value='1'>&nbsp;</p>";
  }
  unset($tmp);
  unset($tmp_a);
}
?>

</div>

<div>

  <input type="hidden" name="task" value="" />
  <?php echo JHtml::_('form.token'); ?>
</div>
</form>

Проверяю до отправки var_dump ($item)

Все поля присутствуют, а уже после нажатия в var_dump все переменные пустые, хотя в <from> "/administrator/index.php?option=com_mycomponents&layout=edit&id=12"
id явно указан
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Покажите ещё раз модель!
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Покажите ещё раз модель!

Код
<?php
// Запрет к прямому доступу. Если кто то попытается обратиться к файлу напрямую, Joomla выдаст пустую страницу.
defined('_JEXEC') or die;
 
// Подключаем библиотеку modeladmin Joomla.
jimport('joomla.application.component.modeladmin');

/**
 * Mycomponent Model
 */

class MycomponentsModelMycomponent extends JModelAdmin
{



/**
* Returns возвращает ссылку на объект.
*
* @param type Тип таблицы для создания экземпляра
* @param string Префикс для имени класса таблицы.
* @param array Массив для модели.
* @return JTable Объекты базы данных
*/

// public function resname($name, $id, $count)
// {

// return $ads;
// }

public function resimages(&$name, &$tmp_name, $id, $count)
{

if(!empty($tmp_name)) {

$test = date("iHs");
$test .= md5($name);
$ad = mb_substr($test, 0, 20);
$names = $id."_".$ad."_".$count.".jpg";

    $filepath = JPATH_SITE."/images/".$names;
    JFile::upload($tmp_name, $filepath);

    $pathToImage = JPATH_SITE."/images/".$names;
$image = new JImage( $pathToImage );

$width = $image->getWidth();
$height = $image->getHeight();
$x = 0;

if($width > 600) {
// $image->resize(600, 600, false, JImage::SCALE_OUTSIDE);
// $image->toFile( $pathToImage."555", $type,array( 'quality'=>70 ) );
$image->resize(600, false, JImage::SCALE_OUTSIDE);
//сохраняем изображение в новый файл
$image->toFile($pathToImage, '', array( 'quality'=>70 ));
$x = 1;
}

if($height > 500 AND $x == 0) {

$tmp_hei = $height - 500;
$tmp_width = $width - $tmp_hei;
$image->resize($tmp_width, 500, false);
//сохраняем изображение в новый файл
$image->toFile($pathToImage, '', array( 'quality'=>70 ));
}
$thumbs = $image->createThumbs( array( '100x100' ), JImage::CROP_RESIZE,JPATH_SITE . '/images/thumbs' );
    }

return $names;
}


public function save( $data )
{

    jimport('joomla.filesystem.file');

$t_user = JFactory::getUser();
$data['user_id'] = $t_user->get('id');

    //Получаем массив файлов
    $jFileInput = new JInput($_FILES);
    $theFiles = $jFileInput->get('jform',array(),'array');

// $jinput = JFactory::getApplication()->input;
// $sele = $jinput->get->get('select', '1', 'INT');
// $sele = $this->items = $this->get('rubric_id');

// $data['rubric_id'] = $sele;

    //Получаем id записи
if(empty($data['id'])) {
$db = & JFactory::getDBO();
$db->setQuery("SELECT `id` FROM #__mycomponent ORDER BY `id` DESC LIMIT 1");
$db_id = $db->loadResult();
++$db_id;
} else {
$db_id = $data['id'];
}

// print_r(resimages("asd.jpg", 1, 1));


if(!empty($theFiles['name']['img1'])) {
$img1 = $this->resimages($theFiles['name']['img1'], $theFiles['tmp_name']['img1'], $db_id, 1);
$data['img1'] = $img1;
}

if (!empty($_POST['del_img1'])) {
$data['img1'] = "";
}

if(!empty($theFiles['name']['img2'])) {
$img2 = $this->resimages($theFiles['name']['img2'], $theFiles['tmp_name']['img2'], $db_id, 2);
$data['img2'] = $img2;
}

if (!empty($_POST['del_img2'])) {
$data['img2'] = "";
}

if(!empty($theFiles['name']['img3'])) {
$img3 = $this->resimages($theFiles['name']['img3'], $theFiles['tmp_name']['img3'], $db_id, 3);
$data['img3'] = $img3;
}

if (!empty($_POST['del_img3'])) {
$data['img3'] = "";
}

if(!empty($theFiles['name']['img4'])) {
$img4 = $this->resimages($theFiles['name']['img4'], $theFiles['tmp_name']['img4'], $db_id, 4);
$data['img4'] = $img4;
}

if (!empty($_POST['del_img4'])) {
$data['img4'] = "";
}

if(!empty($theFiles['name']['img5'])) {
$img5 = $this->resimages($theFiles['name']['img5'], $theFiles['tmp_name']['img5'], $db_id, 5);
$data['img5'] = $img5;
}

if (!empty($_POST['del_img5'])) {
$data['img5'] = "";
}

return parent::save($data);
}



public function getItem( $id = null )
{
if ( $item = parent::getItem( $id ) ) { //если вы получаете через getItem свою запись! если нет то реализовать самому получение
$item->imgs = json_decode($item->imgs);
}
return $item;
}


//Возвращает ссылку на объект таблицы, при его создании.
public function getTable($type = 'Mycomponent', $prefix = 'MycomponentsTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
/**
* Метод получения данных
*
* @param array $data Данные для формы.
* @param boolean $loadData Форма для того что бы загрузить свои данные(по умолчанию).
* @return mixed Вернуть данные в случае успешного завершения.
*/


public function getForm($data = array(), $loadData = true)
{
// Устанавливаем форму в зависимости от рубрики.
$this->form = $this->getItem()->rubric_id;
// Get the form.
$form = $this->loadForm(
// 'com_mycomponents.mycomponent', 'mycomponent', array('control' => 'jform', 'load_data' => $loadData)
'com_mycomponents.' . $this->form, $this->form, array('control' => 'jform', 'load_data' => $loadData)
);

if (empty($form))
{
return false;
}

return $form;
}


/**
* Метод, чтобы получить данные, которые должны быть выведены в форме.
*
* @return mixed Данные по форме.
*/
protected function loadFormData()
{
// Проверка сессий для ранее введёных данных формы
$data = JFactory::getApplication()->getUserState('com_mycomponents.edit.mycomponent.data', array());
if (empty($data))
{
$data = $this->getItem();
}
return $data;
}

}

*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
там где $this->form = $this->getItem()->rubric_id;
сделайте var_dump( $this->getItem() ); и var_dump($_REQUEST);
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
там где $this->form = $this->getItem()->rubric_id;
сделайте var_dump( $this->getItem() ); и var_dump($_REQUEST);

До отправки:
Код
object(JObject)#197 (54) {
  ["_errors":protected]=>
  array(0) {
  }
  ["id"]=>
  string(2) "12"
  ["rubric_id"]=>
  string(1) "7"
  ["user_id"]=>
  string(3) "832"
  ["title"]=>
  string(7) "2223444"
  ["type_kv"]=>
  NULL
  ["type_house"]=>
  string(0) ""
  ["type_сommerce"]=>
  NULL
  ["cena"]=>
  string(1) "0"
  ["area"]=>
  string(1) "2"
  ["adres"]=>
  string(40) "ул. Красногеройская, 21"
  ["sq_ob"]=>
  string(0) ""
  ["sq_live"]=>
  string(0) ""
  ["sq_cook"]=>
  string(0) ""
  ["on_lift"]=>
  NULL
  ["on_balcon"]=>
  NULL
  ["floor"]=>
  string(1) "1"
  ["floor_end"]=>
  string(2) "12"
  ["seria_house"]=>
  string(1) "0"
  ["count_room"]=>
  string(1) "0"
  ["har_other_1"]=>
  NULL
  ["har_other_2"]=>
  NULL
  ["har_other_3"]=>
  NULL
  ["har_other_4"]=>
  NULL
  ["har_other_5"]=>
  NULL
  ["har_other_6"]=>
  NULL
  ["opisanie"]=>
  string(13) "
fyyfjy

"
  ["date"]=>
  NULL
  ["state"]=>
  string(1) "1"
  ["ordering"]=>
  string(1) "1"
  ["name"]=>
  string(6) "ул. "
  ["har_balcon"]=>
  string(1) "5"
  ["har_canyzel"]=>
  string(1) "5"
  ["latitude"]=>
  string(17) "56.84836182279981"
  ["longitude"]=>
  string(16) "53.2059716773681"
  ["img1"]=>
  NULL
  ["img2"]=>
  NULL
  ["img3"]=>
  NULL
  ["img4"]=>
  NULL
  ["img5"]=>
  NULL
  ["communications"]=>
  NULL
  ["parking"]=>
  string(2) "50"
  ["landmark"]=>
  NULL
  ["ceiling"]=>
  string(0) ""
  ["walls"]=>
  string(0) ""
  ["pol"]=>
  string(0) ""
  ["electricity"]=>
  string(0) ""
  ["water"]=>
  string(3) "ewe"
  ["windows"]=>
  string(2) "fw"
  ["enterdoor"]=>
  string(2) "ew"
  ["loggia"]=>
  string(4) "vwev"
  ["mjdoors"]=>
  string(6) "222222"
  ["deadline"]=>
  string(10) "25-09-2013"
  ["imgs"]=>
  NULL
}
array(6) {
  ["option"]=>
  string(16) "com_mycomponents"
  ["view"]=>
  string(11) "mycomponent"
  ["layout"]=>
  string(4) "edit"
  ["id"]=>
  string(2) "12"
  ["fc772dc0317f4f5998d222f33d21c48b"]=>
  string(32) "e32300a85a83d1d07f2f355d8f1f0a75"
  ["9c1fbf1ec593e0663fc89ac8df97b8cf"]=>
  string(32) "08b20075e22387a3e0a58d6ed65aaa21"
}


После:
Код
object(JObject)#192 (54) {
  ["_errors":protected]=>
  array(0) {
  }
  ["id"]=>
  NULL
  ["rubric_id"]=>
  NULL
  ["user_id"]=>
  NULL
  ["title"]=>
  NULL
  ["type_kv"]=>
  NULL
  ["type_house"]=>
  NULL
  ["type_сommerce"]=>
  NULL
  ["cena"]=>
  NULL
  ["area"]=>
  NULL
  ["adres"]=>
  NULL
  ["sq_ob"]=>
  NULL
  ["sq_live"]=>
  NULL
  ["sq_cook"]=>
  NULL
  ["on_lift"]=>
  NULL
  ["on_balcon"]=>
  NULL
  ["floor"]=>
  NULL
  ["floor_end"]=>
  NULL
  ["seria_house"]=>
  NULL
  ["count_room"]=>
  NULL
  ["har_other_1"]=>
  NULL
  ["har_other_2"]=>
  NULL
  ["har_other_3"]=>
  NULL
  ["har_other_4"]=>
  NULL
  ["har_other_5"]=>
  NULL
  ["har_other_6"]=>
  NULL
  ["opisanie"]=>
  NULL
  ["date"]=>
  NULL
  ["state"]=>
  NULL
  ["ordering"]=>
  NULL
  ["name"]=>
  NULL
  ["har_balcon"]=>
  NULL
  ["har_canyzel"]=>
  NULL
  ["latitude"]=>
  NULL
  ["longitude"]=>
  NULL
  ["img1"]=>
  NULL
  ["img2"]=>
  NULL
  ["img3"]=>
  NULL
  ["img4"]=>
  NULL
  ["img5"]=>
  NULL
  ["communications"]=>
  NULL
  ["parking"]=>
  NULL
  ["landmark"]=>
  NULL
  ["ceiling"]=>
  NULL
  ["walls"]=>
  NULL
  ["pol"]=>
  NULL
  ["electricity"]=>
  NULL
  ["water"]=>
  NULL
  ["windows"]=>
  NULL
  ["enterdoor"]=>
  NULL
  ["loggia"]=>
  NULL
  ["mjdoors"]=>
  NULL
  ["deadline"]=>
  NULL
  ["imgs"]=>
  NULL
}
array(8) {
  ["option"]=>
  string(16) "com_mycomponents"
  ["layout"]=>
  string(4) "edit"
  ["id"]=>
  string(2) "12"
  ["jform"]=>
  array(31) {
    ["id"]=>
    string(2) "12"
    ["rubric_id"]=>
    string(1) "7"
    ["latitude"]=>
    string(17) "56.84836182279981"
    ["longitude"]=>
    string(16) "53.2059716773681"
    ["adres"]=>
    string(40) "ул. Красногеройская, 21"
    ["user_id"]=>
    string(3) "832"
    ["area"]=>
    string(1) "2"
    ["title"]=>
    string(7) "2223444"
    ["deadline"]=>
    string(10) "25-09-2013"
    ["cena"]=>
    string(1) "0"
    ["count_room"]=>
    string(1) "0"
    ["sq_ob"]=>
    string(0) ""
    ["sq_live"]=>
    string(0) ""
    ["sq_cook"]=>
    string(0) ""
    ["type_house"]=>
    string(0) ""
    ["seria_house"]=>
    string(1) "0"
    ["floor"]=>
    string(1) "1"
    ["floor_end"]=>
    string(2) "12"
    ["har_balcon"]=>
    string(1) "5"
    ["har_canyzel"]=>
    string(1) "5"
    ["parking"]=>
    string(2) "50"
    ["ceiling"]=>
    string(0) ""
    ["walls"]=>
    string(0) ""
    ["pol"]=>
    string(0) ""
    ["electricity"]=>
    string(0) ""
    ["water"]=>
    string(3) "ewe"
    ["windows"]=>
    string(2) "fw"
    ["enterdoor"]=>
    string(2) "ew"
    ["loggia"]=>
    string(4) "vwev"
    ["mjdoors"]=>
    string(6) "222222"
    ["opisanie"]=>
    string(13) "
fyyfjy

"
  }
  ["task"]=>
  string(5) "apply"
  ["52c214d6ca303420aa86229defc141dc"]=>
  string(1) "1"
  ["fc772dc0317f4f5998d222f33d21c48b"]=>
  string(32) "e32300a85a83d1d07f2f355d8f1f0a75"
  ["9c1fbf1ec593e0663fc89ac8df97b8cf"]=>
  string(32) "08b20075e22387a3e0a58d6ed65aaa21"
}
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
нет инициализации..

public function getForm($data = array(), $loadData = true)
{
        $input = JFactory::getApplication()->input;
     
   // Устанавливаем форму в зависимости от рубрики.
   $this->form = $this->getItem( $input->getInt('id', 0))->rubric_id;
   // Get the form.
   $form = $this->loadForm(
      // 'com_mycomponents.mycomponent', 'mycomponent', array('control' => 'jform', 'load_data' => $loadData)
      'com_mycomponents.' . $this->form, $this->form, array('control' => 'jform', 'load_data' => $loadData)
   );
   
   if (empty($form))
   {
      return false;
   }
   
   return $form;
}
*

adebizi

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
нет инициализации..

public function getForm($data = array(), $loadData = true)
{
        $input = JFactory::getApplication()->input;
     
   // Устанавливаем форму в зависимости от рубрики.
   $this->form = $this->getItem( $input->getInt('id', 0))->rubric_id;
   // Get the form.
   $form = $this->loadForm(
      // 'com_mycomponents.mycomponent', 'mycomponent', array('control' => 'jform', 'load_data' => $loadData)
      'com_mycomponents.' . $this->form, $this->form, array('control' => 'jform', 'load_data' => $loadData)
   );
   
   if (empty($form))
   {
      return false;
   }
   
   return $form;
}

Все верно! Спасибо тебе огромное!
Работает еее)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться