Skip to content

Commit 5dd2a9a

Browse files
author
Ivan Borzenkov
committed
Добавлен параметр delFull - полная очистка урла от дефолтовых параметров
1 parent c7756c9 commit 5dd2a9a

File tree

3 files changed

+34
-8
lines changed

3 files changed

+34
-8
lines changed

QFW/QuickFW/Router.php

+24-2
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,17 @@ public function show404()
296296
public function delDef($url)
297297
{
298298
$url = explode(self::PATH_SEPARATOR, $url);
299+
$url = QFW::$config['redirection']['delFull'] ? $this->delDefFull($url) : $this->delDefSelf($url);
300+
return join(self::PATH_SEPARATOR, $url);
301+
}
302+
303+
private function delDefSelf($url)
304+
{
299305
$n = min(3, count($url));
300306
if (isset($url[0]) && $url[0]==$this->defM && $n--)
301307
array_shift($url);
302308
if (count($url)>$n)
303-
return join(self::PATH_SEPARATOR, $url);
309+
return $url;
304310
$i = $n - 1;
305311
if (count($url)<=$n && isset($url[$i]) && $url[$i]==$this->defA)
306312
{
@@ -310,7 +316,23 @@ public function delDef($url)
310316
}
311317
if (count($url)==1 && $url[0]==$this->defC)
312318
array_shift($url);
313-
return join(self::PATH_SEPARATOR, $url);
319+
return $url;
320+
}
321+
322+
private function delDefFull($url)
323+
{
324+
$n = min(2, count($url));
325+
$i = 0;
326+
//если первый параметр - дефолтовый модуль - убираем его
327+
if (isset($url[0]) && $url[0]==$this->defM && $n--)
328+
array_shift($url);
329+
else
330+
$i++;
331+
if (isset($url[$i]) && $url[$i]==$this->defC)
332+
unset($url[$i]);
333+
if (isset($url[$n]) && $url[$n]==$this->defA)
334+
unset($url[$n]);
335+
return $url;
314336
}
315337

316338
/**

application/default.php

+7-6
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@
2424

2525
/* Настройки перенаправления */
2626
$config['redirection']=array(
27-
'baseUrl' => '/',
28-
'useIndex' => false,
29-
'defExt' => '', //или пусто или .html например
30-
'useRewrite' => true,
31-
'useBlockRewrite' => false,
32-
'delDef' => true,
27+
'baseUrl' => '/',
28+
'useIndex' => false,
29+
'defExt' => '', //или пусто или .html например
30+
'useRewrite' => true,
31+
'useBlockRewrite' => false,
32+
'delDef' => true,
33+
'delFull' => true, //удаляет полностью
3334
);
3435

3536
/**

doc/asciidoc/helpers.txt

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424

2525
Так-же есть функция pget, которая работает как get, только в начале добавляет все GET параметры из запроса.
2626

27+
Парамерты +delDef+ и +delFull+ Управляют удалением дефолтовых компонентов адреса, если включен первый, то адреса будут преобразовываться.
28+
Если при этом включен второй, то +default/news/index/1+ будет преобразован в +news/1+, а если выключен то в +news/index/1+. При включении второго параметра возможны неоднозначности при определении какой экшен вызвать.
29+
2730
Функции get/out Head
2831
~~~~~~~~~~~~~~~~~~~~
2932

0 commit comments

Comments
 (0)