Как использовать JRouter для перезаписи URL контроллера и задачи? - PullRequest
0 голосов
/ 14 февраля 2012

Я использую Joomla 1.5 с файлом router.php для перезаписи URL-адресов просмотров . Вот содержимое router.php :

<?php
function PvcCalcProBuildRoute( &$query )
{
  $segments = array();
  if(isset($query['view']))
  {
    $segments[] = $query['view'];
    unset( $query['view'] );
  }
  return $segments;
}
function PvcCalcProParseRoute( $segments )
{
  $vars = array();
  switch($segments[0])
  {
    case 'cart':
    $vars['view'] = 'cart';
    break;
    case 'checkout':
    $vars['view'] = 'checkout';
    break;
    case 'login':
    $vars['view'] = 'login';
    break;
    case 'orders':
    $vars['view'] = 'orders';
    break;
    case 'offers':
    $vars['view'] = 'offers';
    break;
  }
  return $vars;
}
?>

Мне нужно включить перезапись URL для controller и task . Например, эта строка:

JRoute::_('index.php?option=com_pvccalcpro&amp;task=helpers');

Я хочу преобразовать в / component / pvccalcpro / helpers.js

И эта строка:

JRoute::_('index.php?option=com_pvccalcpro&amp;controller=orders&amp;task=js');

Я хочу преобразовать в / component / pvccalcpro / orders.js

Я пытался выяснить, как этого добиться с помощью официального Joomla Routing Manual , но, проведя так много дней, он все равно не сработал для меня. Возможно, я что-то упустил?

Вот содержимое моего заказов контроллера, например:

<?php
// no direct access
defined('_JEXEC') or die();
jimport('joomla.application.component.model');
class PvcCalcProControllerOrders extends PvcCalcProController
{
    function display()
    {
      parent::display();
    }

    function js()
    {
      $t=time()+31536000;
      $expires = gmdate('D, d M Y H:i:s \G\M\T',$t);
      header('Content-type: text/javascript; charset=utf-8');
      header('Vary: Accept-Encoding');
      header('Last-Modified: Tue, 27 Dec 2001 07:05:43 GMT');
      header('Expires: '.$expires);
      header('Cache-Control: public, max-age=31536000');
      require_once(JPATH_COMPONENT.DS.'assets/js/orders.js');
      die();
    }
}
?>

1 Ответ

0 голосов
/ 14 февраля 2012

В ваших двух JRoute примерах вы передаете путь к вашему компоненту, но ожидаете, что он вернет путь к вашим файлам Javascript.

JRoute предназначен для создания удобочитаемых URL-адресов для Joomla! компоненты, которые вы пытаетесь использовать для файлов Javascript по внешнему виду.

Цитировать Joomla! Страница документа - «Joomla может изначально создавать только удобочитаемые URL-адреса для встроенных компонентов».

...