tablas relaciones relacionadas relacion que obtener muchos hasmany espaƱol datos php frameworks uri yii current-page

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'');



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.