사용자 지정 구성 요소를 쓰고 있습니다. 보기가 employees
입니다. 이보기에서 나는 두 개의 레이아웃, default
및 modal
을 가지고 있습니다.SEF 및 URL 다시 쓰기를 사용할 때 오류 500 "보기를 찾을 수 없음"
index.php?option=com_mycomponent&view=employees
domain.com/joomla/employees
으로 확인하고 예상대로 기본보기를 디스플레이의 :
나는 내 직원의보기를 가리키는 메인 메뉴 Employees
의 맨 위의 메뉴 항목이있다.
이제 내 구성 요소 내부에 나는 모달 뷰에 연결하려면, 나는 그렇게 JRoute이 URL을 사용하여 수행합니다
index.php?option=com_mycomponent&view=employees&layout=modal
domain.com/joomla/employees/modal
그리고이 오류가 발생합니다.
500 - View not found [name, type, prefix]: modal, html, mycomponentView
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;
}
라우터 복사본을 첨부하십시오.php를 구성 요소의 루트 디렉토리 ('/ components/com_mycomponent/router.php')에 추가하십시오. 이 파일은 SEF url의 구문 분석 및 빌드를 처리하며이 경우를 처리하도록 수정해야합니다! –
안녕하세요! 고마워요! 나는 그 파일을 지금까지 보지 못했다. 질문을 편집하여 내용을 포함 시켰습니다. 다행히도 이것이 나를 알아낼 수있는 올바른 길로 인도 할 것이지만, 당신이 제공 할 수있는 더 많은 통찰력에 크게 감사 할 것입니다. 다시 한번 감사드립니다. –