Yii2 translated behavior
This extension helps you to quickly add the ability to translate your website.
This extension helps you to quickly add the ability to translate your website.
URL helper fornece um conjunto de métodos estáticos para o gerenciamento de URLs.
Há dois métodos que você pode usar para obter URLs comuns: URL home e URL base para a requisição corrente. Para obter a URL home, use o seguinte:
$relativeHomeUrl = Url::home();
$absoluteHomeUrl = Url::home(true);
$httpsAbsoluteHomeUrl = Url::home('https');
Se nenhum parâmetro for passado, a URL gerada é relativa. Você pode passar true
para obter uma URL absoluta para a o esquema corrente ou especificar um esquema explicitamente (https
, http
).
Para obter a URL base da requisição corrente, use o seguinte :
$relativeBaseUrl = Url::base();
$absoluteBaseUrl = Url::base(true);
$httpsAbsoluteBaseUrl = Url::base('https');
O único parâmetro do metódo funciona exatamente da mesma que em Url::home()
.
Afim de criar ma URL para uma rota utilize o metódo Url::toRoute()
. O metódo usa [[\yii\web\UrlManager]] para criar a URL:
$url = Url::toRoute(['product/view', 'id' => 42]);
Você pode especificar uma URL como string, ou seja, site/index
. Você pode também usar um array se você precisa especificar parâmetros adicionais para a URL a ser criada. O formato do array deve ser:
// generates: /index.php?r=site/index¶m1=value1¶m2=value2
['site/index', 'param1' => 'value1', 'param2' => 'value2']
Se você quiser criar uma URL com uma ancôra (anchor), você pode usar no array o parâmetro #
. Por exemplo,
// generates: /index.php?r=site/index¶m1=value1#name
['site/index', 'param1' => 'value1', '#' => 'name']
Uma rota pode ser absoluta ou relativa. Uma rota absoluta tem uma barra inicial (e.g. /site/index
) enquanto uma rota relativa não (e.g. site/index
or index
). Uma rota relativa pode ser convertida em absoluta seguinda as seguintes regras:
index
), considera-se ser o ID da acão corrente do controlador;
e serão precedidas por [[\yii\web\Controller::uniqueId]];site/index
), isto é considerado um URL relativa para para o modulo corrente
e será precedido por [[\yii\base\Module::uniqueId|uniqueId]].A partir da versão 2.0.2, você pode espeficiar uma rota como um alias. Se esse é o caso, o alias será primeiro convertido para rota atual que irá então ser transformado em uma rota absoluta de acordo às regras acima .
Abaixo estão alguns exemplos de como usar este método:
// /index.php?r=site/index
echo Url::toRoute('site/index');
// /index.php?r=site/index&src=ref1#name
echo Url::toRoute(['site/index', 'src' => 'ref1', '#' => 'name']);
// /index.php?r=post/edit&id=100 assume the alias "@postEdit" is defined as "post/edit"
echo Url::toRoute(['@postEdit', 'id' => 100]);
// http://www.example.com/index.php?r=site/index
echo Url::toRoute('site/index', true);
// https://www.example.com/index.php?r=site/index
echo Url::toRoute('site/index', 'https');
Há um outro método Url::to()
que é muito semelhante a [[toRoute()]]. A única diferença é que este método requer uma rota a ser especificado como apenas como array. Se for dado uma string, ela será tratada como um URL.
O primeiro argumento pode ser:
['site/index']
, ['post/index', 'page' => 2]
. Por favor consulte [[toRoute()]] para mais detalhes de como especificar uma rota.@
: ele é tratado como um alias, e as strings correspondentes ao alias serão devolvidos.Quando $scheme
é espefificado (como uma string ou true
),uma URL absoluta com informações do host (obtida de
[[\yii\web\UrlManager::hostInfo]]) será retornada. Se $url
já é uma URL absoluta, seu scheme
irá ser substituído pelo o especificado.
Abaixo estão alguns exemplos de uso:
// /index.php?r=site/index
echo Url::to(['site/index']);
// /index.php?r=site/index&src=ref1#name
echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name']);
// /index.php?r=post/edit&id=100 assume the alias "@postEdit" is defined as "post/edit"
echo Url::to(['@postEdit', 'id' => 100]);
// the currently requested URL
echo Url::to();
// /images/logo.gif
echo Url::to('@web/images/logo.gif');
// images/logo.gif
echo Url::to('images/logo.gif');
// http://www.example.com/images/logo.gif
echo Url::to('@web/images/logo.gif', true);
// https://www.example.com/images/logo.gif
echo Url::to('@web/images/logo.gif', 'https');
A partir da versão 2.0.3, você pode usar [[yii\helpers\Url::current()]] para criar uma URL base para rota solicitada e parâmetros GET. Você pode modificar ou remover alguns dos parâmetros GET ou adicionar novos por
passando o parâmetro $ params
para o método. Por exemplo,
// assume $_GET = ['id' => 123, 'src' => 'google'], current route is "post/view"
// /index.php?r=post/view&id=123&src=google
echo Url::current();
// /index.php?r=post/view&id=123
echo Url::current(['src' => null]);
// /index.php?r=post/view&id=100&src=google
echo Url::current(['id' => 100]);
Há casos em que você precisa se lembrar URL e depois usá-lo durante o processamento de uma das requisições sequenciais. Pode ser conseguida da seguinte forma:
// Remember current URL
Url::remember();
// Remember URL specified. See Url::to() for argument format.
Url::remember(['product/view', 'id' => 42]);
// Remember URL specified with a name given
Url::remember(['product/view', 'id' => 42], 'product');
Na próxima requisição, podemos obter URL lembrada da seguinte forma:
$url = Url::previous();
$productUrl = Url::previous('product');
Para saber se a URL é relativa, ou seja, ele não tem informações do host, você pode usar o seguinte código:
$isRelative = Url::isRelative('test/it');