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

broadcast77

  • Осваиваюсь на форуме
  • 27
  • 0 / 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

  • Живу я здесь
  • 3406
  • 428 / 4
а зачем вы создав три вида делаете таски?!
Открывайте виды, а не задачи сразу:
Код: 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>
*

broadcast77

  • Осваиваюсь на форуме
  • 27
  • 0 / 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 / 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, 12:28:00 от broadcast77 »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Если с нуля пишете компонент то у меня в подписи ссылка на генератор каркаса компонента, сгенерируйте и не мучайтесь )
*

broadcast77

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

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

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

zomby6888

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

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Мой вопрос прежний - есть ли какая нибудь связь между видами, которые мне нужны в субменю и центральным контроллером?
Главный контроллер по дефолту выполнет метод display() если указан в строка адреса вид: &view=blablabla то отобразиться нужный вид!
Если вид не указан то отобразится тот вид что стоит в $this->default_view = 'nameOfDefaultView'; если нет то будет ошибка!
*

broadcast77

  • Осваиваюсь на форуме
  • 27
  • 0 / 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

  • Живу я здесь
  • 3406
  • 428 / 4
вот код моего главного контроллера.

Тут всё что надо или чего то не хватает ?
Тут все что надо удалить, у меня дефолтный контроллер такой:
Код: 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 );
}
}
*

broadcast77

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

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


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

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
какая то неразбериха с 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()
*

broadcast77

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

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

broadcast77

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

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

Aleks.Denezh

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

broadcast77

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Спасибо за помощь! Буду разбираться дальше =)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание компонента для табеля рабочего времени

Автор sashahz

Ответов: 7
Просмотров: 471
Последний ответ 12.04.2021, 11:12:11
от sashahz
Вызов формы компонента в pop-up, при клике по ссылке из любого места

Автор SkyAn

Ответов: 1
Просмотров: 392
Последний ответ 01.03.2021, 04:08:48
от gartes
[РЕШЕНО] Дублирование при создании

Автор platonische

Ответов: 7
Просмотров: 921
Последний ответ 12.02.2021, 11:24:26
от platonische
Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 2896
Последний ответ 23.01.2021, 07:55:56
от hmr
Сборка инсталятора компонента файлами из разных папок с привлечением github

Автор borro

Ответов: 1
Просмотров: 410
Последний ответ 25.12.2020, 21:21:30
от platonische