Ссылки субменю при создании своего компонента

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

broadcast77

  • Осваиваюсь на форуме
  • ***
  • 27
  • 0
Задача довольно таки простая. Но тем не менее, возникла заминка.

У меня есть несколько видов: Юзеры, Товары и Заказы.

Ну и собственно меню компонента, которое подразделяется на вышеперечисленные субменю.

Аля: мой_компонент:
                            -юзеры
                             -товары
                             -заказы

Я так понял что в файле манифеста это должно выглядеть вот так:

Код
<menu>COM_MEDSIGNAL</menu>
<submenu>
<menu link="option=com_medsignal&amp;task=showgoods">COM_MEDSIGNAL_GOODS</menu>
<menu link="option=com_medsignal&amp;task=showusers">COM_MEDSIGNAL_USERS</menu>
<menu link="option=com_medsignal&amp;task=showorders">COM_MEDSIGNAL_ORDER</menu>
</submenu>

И далее в контроллере, на который ссылается точка входа, я создаю нужные функции

Код
public function showgoods() {
   echo "showgoods!";
}

public function showusers() {
   echo "showusers!";
}

public function showorders() {
   echo "showorders!";
}


Проблема в том, что к сожалению при попытке открыть любой из пунктов субменю - программа всё равно ссылается на вид, который выводится по умолчанию.

Как тут быть? Спасибо!

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2785
  • 376
а зачем вы создав три вида делаете таски?!
Открывайте виды, а не задачи сразу:
Код: xml
<menu link="option=com_medsignal&amp;view=goods" view="goods">COM_MEDSIGNAL_GOODS</menu>
<menu link="option=com_medsignal&amp;view=users"  view="users">COM_MEDSIGNAL_USERS</menu>
<menu link="option=com_medsignal&amp;view=orders" view="orders">COM_MEDSIGNAL_ORDER</menu>
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

broadcast77

  • Осваиваюсь на форуме
  • ***
  • 27
  • 0
а зачем вы создав три вида делаете таски?!
Открывайте виды, а не задачи сразу:
Код: xml
<menu link="option=com_medsignal&amp;view=goods" view="goods">COM_MEDSIGNAL_GOODS</menu>
<menu link="option=com_medsignal&amp;view=users"  view="users">COM_MEDSIGNAL_USERS</menu>
<menu link="option=com_medsignal&amp;view=orders" view="orders">COM_MEDSIGNAL_ORDER</menu>

хм, попробую. я просто смотрел видео-мануал, там было по таскам)
наверное опять наткнулся на старую версию Joomla =)

*

broadcast77

  • Осваиваюсь на форуме
  • ***
  • 27
  • 0
Попробовал как вы сказали.

Код
<menu link="option=com_medsignal&amp;view=statistics" view="statistics">COM_MEDSIGNAL_GOODS</menu>

Ругается на центральный контроллер.

Код
Fatal error: Class 'MedsignalViewsStaticticsHtml' not found in /home/v/vyrd2014/medsignal/public_html/administrator/components/com_medsignal/controllers/display.php on line 25

В нём тоже надо что то прописывать дополнительно?

UPD

Перепаковал и переустановил своё расширение. Серьёзных ошибок нет, но выдало почему то:
Код
An error has occurred.
 0 Layout Path Not Found
« Последнее редактирование: 23.09.2015, 14:28:00 от broadcast77 »

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2785
  • 376
Если с нуля пишете компонент то у меня в подписи ссылка на генератор каркаса компонента, сгенерируйте и не мучайтесь )
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

broadcast77

  • Осваиваюсь на форуме
  • ***
  • 27
  • 0
Если с нуля пишете компонент то у меня в подписи ссылка на генератор каркаса компонента, сгенерируйте и не мучайтесь )

Сгенерить то можно, но этого не достаточно. Я ведь понять пытаюсь, что к чему.
Ведь это не единственный компонент, который мне придется разрабатывать.

Мой вопрос прежний - есть ли какая нибудь связь между видами, которые мне нужны в субменю и центральным контроллером?
И если нет, то как быть?

*

zomby6888

  • Живу я здесь
  • ******
  • 1484
  • 167
Какой у вас вообще контроллер отрабатывает когда меню открывается? Сдается мне что не тот что нужен. Если научитесь пользоваться отладчиком все вопросы подобного рода отпадут.
интернет-блог: http://websiteprog.ru

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2785
  • 376
Мой вопрос прежний - есть ли какая нибудь связь между видами, которые мне нужны в субменю и центральным контроллером?
Главный контроллер по дефолту выполнет метод display() если указан в строка адреса вид: &view=blablabla то отобразиться нужный вид!
Если вид не указан то отобразится тот вид что стоит в $this->default_view = 'nameOfDefaultView'; если нет то будет ошибка!
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

broadcast77

  • Осваиваюсь на форуме
  • ***
  • 27
  • 0
Главный контроллер по дефолту выполнет метод display() если указан в строка адреса вид: &view=blablabla то отобразиться нужный вид!
Если вид не указан то отобразится тот вид что стоит в $this->default_view = 'nameOfDefaultView'; если нет то будет ошибка!

вот код моего главного контроллера.

Код
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); 
 
class MedsignalControllersDisplay extends JControllerBase {
public function execute() {

// Get the application
$app = $this->getApplication();

// Get the document object.
$document     = JFactory::getDocument();

$viewName     = $app->input->getWord('view', 'defaultview');
$viewFormat   = $document->getType();
$layoutName   = $app->input->getWord('layout', 'defaultview');

$app->input->set('view', $viewName);

// Register the layout paths for the view
$paths = new SplPriorityQueue;
$paths->insert(JPATH_COMPONENT . '/views/' . $viewName . '/tmpl', 'normal');

$viewClass  = 'MedsignalViews' . ucfirst($viewName). ucfirst($viewFormat);
$modelClass = 'MedsignalModels' . ucfirst($viewName);

$view = new $viewClass(new $modelClass, $paths);
$view->setLayout($layoutName);

// Render our view.
echo $view->render();

return true;
}
}

Тут всё что надо или чего то не хватает ?

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2785
  • 376
вот код моего главного контроллера.

Тут всё что надо или чего то не хватает ?
Тут все что надо удалить, у меня дефолтный контроллер такой:
Код: php
class WssContentController extends JControllerLegacy
{
/**
* @var string Вид по умолчанию
*/
protected $default_view = 'articles';
/**
* Вывод вида
* @param bool $cachable
* @param array $urlparams
* @return void
*/
public function display( $cachable = false, $urlparams = array() )
{
parent::display( $cachable, $urlparams );
}
}
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

broadcast77

  • Осваиваюсь на форуме
  • ***
  • 27
  • 0
спасибо! попробую!

какая то неразбериха с Joomla) а вернее с мануалами. везде всё по разному))
есть хоть какой то стандарт?)


кстати, ещё такой вопрос, вот опять же - в главном контроллере метод по умолчанию называется display.
Это по стандарту задано или можно по своему назвать?

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2785
  • 376
какая то неразбериха с Joomla) а вернее с мануалами. везде всё по разному))
есть хоть какой то стандарт?)
Да нет никакого особо стандарта, все пишут как захотят, хотя я стараюсь придерживать более менее стандарта, и в таком стандарте создает на сайте у меня генератор каркас для компонента!


кстати, ещё такой вопрос, вот опять же - в главном контроллере метод по умолчанию называется display.
Это по стандарту задано или можно по своему назвать?
Это по стандарту!
Вот например точка входа в приложение:
Код: php
include_once JPATH_COMPONENT . '/helpers/wsscontent.php';
$controller = JControllerLegacy::getInstance( 'wsscontent' );
$controller->execute( JFactory::getApplication()->input->get( 'task' ) );
$controller->redirect();
$controller = JControllerLegacy::getInstance( 'wsscontent' ); - получаем дефолтный контроллер!
$controller->execute( JFactory::getApplication()->input->get( 'task' ) ); - а вот тут самое интересное, если в дефолтном контроллере есть метод с названием task (тоесть например &task=test) то выполнится метод test если нету то выполнится метод display()
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

broadcast77

  • Осваиваюсь на форуме
  • ***
  • 27
  • 0
Да уж... спасибо вам.

Ваши туториалы в вашем блоге оченьб хорошие, попробую по ним сделать, но они просто небо и земля по сравнению с тем, что я делал до этого((

*

broadcast77

  • Осваиваюсь на форуме
  • ***
  • 27
  • 0
Да, простите пожалуйста за оффтоп, но у меня есть один вопрос.
Короче, всё чему были посвящены этот и другие топики.
Вообщем, суть в чём - я пытаюсь создать ajax-корзину для заказов и покупок для моего интернет-магазина.
И честно сказать, я даже до сих пор не знаю, что для этого именно нужно в Joomla то создать - модуль или компонент?

Я вот начал делать компонент, но всё никак не получается. Может мне модуль нужно делать? В чём между ними разница то?

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2785
  • 376
Я вот начал делать компонент, но всё никак не получается. Может мне модуль нужно делать? В чём между ними разница то?
Никакой разницы, и у меня в блоге есть статьи как через AJAX стучаться и в модули и в плагины и в компонены!
А вот тут http://joomlaforum.ru/index.php/topic,302675.msg1502772.html#msg1502772 я писал мой любимый способ стучаться аяксом в компоненты (кстати этот способ внедрен в каркасе который генерирует конструктор на моем сайте)
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

broadcast77

  • Осваиваюсь на форуме
  • ***
  • 27
  • 0
Спасибо за помощь! Буду разбираться дальше =)