web-dev-qa-db-fra.com

Obtention d'arguments à partir d'une URL

Comment obtenir des arguments de l'URL? en d'autres termes, quel est l'équivalent de la fonction arg() de Drupal 7 et versions précédentes?

5

Comme indiqué dans le arg () est obsolète et sera supprimé changer d'enregistrement, l'équivalent Drupal 8 (procédural) de arg() est le suivant une.

$current_path = \Drupal::service('path.current')->getPath();
$path_args = explode('/', $current_path);

Comme l'enregistrement des modifications le fait remarquer, ce n'est pas toujours le bon code à utiliser. Selon le contexte, vous devez utiliser un code similaire au suivant.

  • Vérifier si un chemin est pour une page administrative

    if (\Drupal::service('router.admin_context')->isAdminRoute()) {
      // Your code.
    }
    
  • Ajouter CSS ou JavaScript conditionnellement, en fonction de la page visitée

    function mymodule_page_attachments(array &$attachments) {
      if (\Drupal::routeMatch()->getRouteName() == 'my.route') {
        $attachments ['#attached']['library'][] = 'my_module/my_library'; // you'll need to define in mymodule.libraries.yml
      }
    }
    
  • Charger le nœud actuellement affiché

    $node = \Drupal::routeMatch()->getParameter('node');
    

Notez que dans le premier et le dernier cas, dans Drupal 7, vous ne devez pas utiliser arg(), mais respectivement path_is_admin() et menu_get_object() L'erreur typique débutant-Drupal-développeur utilise arg() également dans ces cas.

10
kiamlaluno

Veuillez voir https://www.drupal.org/node/2150267

Drupal 7

$query = $_GET['q']; // query string param
$myparam = $_POST['myparam']; // form param
$request_method = $_SERVER['REQUEST_METHOD']; // server variable
$mycookie = $_COOKIE['mycookie']; // cookie

Dans Drupal 8

$query = \Drupal::request()->query->get('q'); // query string param
$name = \Drupal::request()->request->get('name'); // form param
$request_method = \Drupal::request()->server->get('REQUEST_METHOD'); // server variable
$mycookie = \Drupal::request()->cookies->get('mycookie'); // cookie
3
user21513

arg () est déconseillé dans drupal 8, cependant nous pouvons obtenir des valeurs comme arg () la fonction le fait dans drupal 7 & 6 par mentionné)

$path = \Drupal::request()->getpathInfo();
$arg  = explode('/',$path);
print_r($arg); exit(); 

La sortie serait des paramètres dans l'url sauf basepath ou (baseurl),

Array
(
   [0] => 
   [1] => node
   [2] => add
)
2