【发布时间】:2013-06-10 01:11:48
【问题描述】:
我正在编写一个自定义组件。我有观点employees。在这个视图下,我有两个布局,default 和modal。
我在主菜单的顶层有一个菜单项Employees,它指向我的员工视图:
index.php?option=com_mycomponent&view=employees 解析为 domain.com/joomla/employees 并按预期显示默认视图。
现在,在我的组件中,我想链接到模态视图,我使用 JRoute 和这个 url:
index.php?option=com_mycomponent&view=employees&layout=modal
解决方法
domain.com/joomla/employees/modal
并产生此错误:
500 - 未找到视图 [名称、类型、前缀]:模态、html、 我的组件视图
如果我使用index.php?option=com_mycomponent&view=employees&layout=modal 访问 index.php,我的模态视图就会显示出来。
我还发现访问domain.com/joomla/employees/employees/modal 会显示正确的布局。就好像 joomla 忘记了与 /joomla/employees 的菜单项相关联的视图,而是寻找“模态”视图,除非在 url 中提供了额外的“员工”。
另外值得注意的是,domain.com/joomla/employee?layout=modal 也可以正常工作。
这是我的 router.php 文件。这是使用j-cook.pro 的组件生成器为我生成的文件。
<?php
defined('_JEXEC') or die;
function MycomponentBuildRoute(&$query){
$segments = array();
if(isset($query['view']))
{
$view = $query['view'];
$segments[] = $view;
unset( $query['view'] );
}
if(isset($query['layout']))
{
$segments[] = $query['layout'];
unset( $query['layout'] );
}
if(isset($query['id']))
{
if(in_array($view, array('edit','view','view','editfacility','view','edit','client','editclient','viewposition','editposition','edit','view','edit','view','view','edit','view','edit','view','edit','view','edit')))
{
$segments[] = (is_array($query['id'])?implode(',', $query['id']):$query['id']);
unset( $query['id'] );
}
};
return $segments;
}
function MycomponentParseRoute($segments)
{
$vars = array();
$vars['view'] = $segments[0];
$nextPos = 1;
if (isset($segments[$nextPos]))
{
$vars['layout'] = $segments[$nextPos];
$nextPos++;
}
if(in_array($vars['view'], array('edit','view','view','editfacility','view','edit','client','editclient','viewposition','editposition','edit','view','edit','view','view','edit','view','edit','view','edit','view','edit'))
&& isset($segments[$nextPos]))
{
$slug = $segments[$nextPos];
$id = explode( ':', $slug );
$vars['id'] = (int) $id[0];
$nextPos++;
}
return $vars;
}
【问题讨论】:
-
请在组件的根目录中包含您的 router.php 副本 (
/components/com_mycomponent/router.php)。该文件处理 SEF url 的解析和构建,需要修复以处理这种情况! -
嘿!非常感谢!直到现在我什至没有看过那个文件。我编辑了问题以包含内容。希望这将使我走上正确的道路来弄清楚它,但我将非常感谢您提供的任何更多见解。再次感谢。
标签: joomla joomla2.5 custom-component