J'ai créé un bloc personnalisé comme ceci:
class HelloBlock extends BlockBase implements BlockPluginInterface{
/**
* {@inheritdoc}
*/
public function build() {
$config = $this->getConfiguration();
$result = db_query('SELECT * FROM {test}');
return array(
'#theme' => 'world',
'#test' => $result
);
}
}
Et je veux maintenant obtenir par programme certains paramètres de l'URL.
Par exemple:
Si l'URL est http://localhost/drup/hello/5569
, je souhaite récupérer la valeur 5569
dans mon module.
J'ai essayé arg(1)
et drupal_get_query_parameters()
mais j'ai reçu les messages d'erreur suivants:
Call to undefined function `Drupal\hello\Plugin\Block\arg()`
et
Call to undefined function `Drupal\hello\Plugin\Block\drupal_get_query_parameters()`
Comment puis-je obtenir les paramètres?
J'avais l'habitude d'obtenir la valeur du paramètre de l'URL (localhost/check/myform? Mob = 89886665)
$param = \Drupal::request()->query->all();
Et appliqué dans ma requête sélectionnée
$query = \Drupal::database()->select('profile_register', 'p1');
$query->fields('p1');
$query->condition('p1.mobileno', $edituseprof);
$query->condition('publishstatus', 'no');
$result = $query->execute()->fetchAll();
Mais sur plusieurs valeurs de paramètre, je réussis maintenant ( Ex: http://10.163.14.41/multisite/check/myform?mob=89886665&id=1 )
$query = \Drupal::database()->select('profile_register', 'p1');
$query->fields('p1');
$query->condition('p1.mobileno', $edituseprof['mob']);
$query->condition('p1.ids', $edituseprof['id']);
$query->condition('publishstatus', 'no');
$result = $query->execute()->fetchAll();
Utilisez \Drupal\Core\Routing;
:
$parameters = \Drupal::routeMatch()->getParameters();
arg () est obsolète dans drupal 8, cependant nous pouvons obtenir des valeurs similaires à la fonction arg () dans drupal 7 & 6
$path = \Drupal::request()->getpathInfo();
$arg = explode('/',$path);
print_r($arg); exit();
La sortie serait des paramètres en url sauf basepath ou (baseurl),
Array
(
[0] =>
[1] => node
[2] => add
)
$route_match = \Drupal::service('current_route_match');
$abc = $route_match->getParameter('node'); //node is refrence to what you have written in you routing file i.e:
in something.routing.yml
entity.node.somepath:
path: '/some/{node}/path'
J'ai utilisé {node} comme arg (1). Et je peux y accéder en utilisant * -> getParameter ('node');
J'espère que cela fonctionnera.
Si votre url est comme ceci ci-dessous exemple
http://localhost/drupal/node/6666
Ensuite, vous devez obtenir le chemin complet de l'URL par
$current_path = \Drupal::request()->getPathInfo();
puis exploser le chemin pour obtenir le tableau d'arguments.
$path_args = explode('/', $current_path);
Un autre exemple si la valeur est passée par une clé dans l'URL comme ci-dessous, où id contient la valeur
http://localhost/drupal?id=123
Vous pouvez obtenir l'identifiant sur demande drupal
$id = \Drupal::request()->query->get('id');
Pour obtenir un paramètre de requête à partir de l’URL, vous pouvez utiliser les éléments suivants: Si vous avez l’URL par exemple,
domainname.com/page?uid=123&num=452
Pour obtenir "uid" depuis l'URL, utilisez ..
$uid = \Drupal::request()->query->get('uid');
Pour obtenir "num" à partir de l'URL, utilisez ..
$num = \Drupal::request()->query->get('num');