php - relacionadas - relaciones laravel
Obtenga la URL/URI actual sin algunas de las variables $_GET (12)
La mayoría de las otras respuestas son incorrectas. El póster solicita la URL SIN (algunos) $ _GET-parámetros.
Aquí hay un desglose completo (crear url para el controlador actualmente activo, módulos o no):
// without $_GET-parameters
Yii::app()->controller->createUrl(Yii::app()->controller->action->id);
// with $_GET-parameters, HAVING ONLY supplied keys
Yii::app()->controller->createUrl(Yii::app()->controller->action->id,
array_intersect_key($_GET, array_flip(array(''id'')))); // include ''id''
// with all $_GET-parameters, EXCEPT supplied keys
Yii::app()->controller->createUrl(Yii::app()->controller->action->id,
array_diff_key($_GET, array_flip(array(''lg'')))); // exclude ''lg''
// with ALL $_GET-parameters (as mensioned in other answers)
Yii::app()->controller->createUrl(Yii::app()->controller->action->id, $_GET);
Yii::app()->request->url;
Cuando no tiene el mismo controlador activo, debe especificar la ruta completa de la siguiente manera:
Yii::app()->createUrl(''/controller/action'');
Yii::app()->createUrl(''/module/controller/action'');
Consulte la guía de Yii para compilar url''s en general: http://www.yiiframework.com/doc/guide/1.1/en/topics.url#creating-urls
Cómo, en Yii, obtener la URL de la página actual. Por ejemplo:
http://www.yoursite.com/your_yii_application/?lg=pl&id=15
pero excluyendo $GET_[''lg'']
(sin analizar la cadena manualmente)?
Quiero decir, estoy buscando algo similar a los métodos Yii::app()->requestUrl
/ Chtml::link()
, para devolver URLs menos algunas de las variables $_GET
.
Editar : solución actual:
unset $_GET[''lg''];
echo Yii::app()->createUrl(
Yii::app()->controller->getId().''/''.Yii::app()->controller->getAction()->getId() ,
$_GET
);
Algo como esto debería funcionar, si se ejecuta en el controlador:
$controller = $this;
$path = ''/path/to/app/''
. $controller->module->getId() // only necessary if you''re using modules
. ''/'' . $controller->getId()
. ''/'' . $controller->getAction()->getId()
. ''/'';
Esto supone que estás usando URL ''amigables'' en la configuración de tu aplicación.
Yii::app()->request->url
Yii::app()->createAbsoluteUrl(Yii::app()->request->url)
Esto generará algo en el siguiente formato:
http://www.yoursite.com/your_yii_application/
Intenta usar esta variante:
<?php echo Yii::app()->createAbsoluteUrl(''your_yii_application/?lg=pl'', array(''id''=>$model->id));?>
Es la forma más fácil, supongo.
Entonces, puedes usar
Yii::app()->getBaseUrl(true)
para obtener una url de webroot absoluta y quitar los http [s]: //
Para obtener la URL de solicitud actual absoluta (exactamente como se ve en la barra de direcciones, con los parámetros GET y http: //) encontré que lo siguiente funciona bien:
Yii::app()->request->hostInfo . Yii::app()->request->url
$validar= Yii::app()->request->getParam(''id'');
En yii2 puedes hacer:
use yii/helpers/Url;
...
$withoutLg = Url::current([''lg''=>NULL], TRUE);
Más información: http://www.yiiframework.com/doc-2.0/yii-helpers-baseurl.html#current%28%29-detail
Definitivamente estás buscando esto
Yii::app()->request->pathInfo
La mayoría de las respuestas son incorrectas.
La pregunta es obtener la URL sin algún parámetro de consulta.
Aquí está la función que funciona. Hace más cosas en realidad. Puede eliminar el parámetro que no desea y puede agregar o modificar uno existente.
/**
* Function merges the query string values with the given array and returns the new URL
* @param string $route
* @param array $mergeQueryVars
* @param array $removeQueryVars
* @return string
*/
public static function getUpdatedUrl($route = '''', $mergeQueryVars = [], $removeQueryVars = [])
{
$currentParams = $request = Yii::$app->request->getQueryParams();
foreach($mergeQueryVars as $key=> $value)
{
$currentParams[$key] = $value;
}
foreach($removeQueryVars as $queryVar)
{
unset($currentParams[$queryVar]);
}
$currentParams[0] = $route == '''' ? Yii::$app->controller->getRoute() : $route;
return Yii::$app->urlManager->createUrl($currentParams);
}
uso:
ClassName:: getUpdatedUrl('''',[],[''remove_this1'',''remove_this2''])
Esto eliminará los parámetros de consulta ''remove_this1'' y ''remove_this2'' de la URL y le devolverá la nueva URL
No sé cómo hacerlo en Yii, pero podrías hacer esto, y debería funcionar en cualquier lugar (en gran medida eliminado de mi respuesta aquí ):
// Get HTTP/HTTPS (the possible values for this vary from server to server)
$myUrl = (isset($_SERVER[''HTTPS'']) && $_SERVER[''HTTPS''] && !in_array(strtolower($_SERVER[''HTTPS'']),array(''off'',''no''))) ? ''https'' : ''http'';
// Get domain portion
$myUrl .= ''://''.$_SERVER[''HTTP_HOST''];
// Get path to script
$myUrl .= $_SERVER[''REQUEST_URI''];
// Add path info, if any
if (!empty($_SERVER[''PATH_INFO''])) $myUrl .= $_SERVER[''PATH_INFO''];
$get = $_GET; // Create a copy of $_GET
unset($get[''lg'']); // Unset whatever you don''t want
if (count($get)) { // Only add a query string if there''s anything left
$myUrl .= ''?''.http_build_query($get);
}
echo $myUrl;
Alternativamente, podría pasar el resultado de uno de los métodos Yii a parse_url()
y manipular el resultado para volver a generar lo que desea.