web-dev-qa-db-ja.com

URLから引数を取得する

URLから引数を取得するにはどうすればよいですか?言い換えると、Drupal 7および以前のバージョンのarg()関数と同等のものは何ですか?

arg()は非推奨であり、削除されます 変更レコードで報告されているように、Drupal 8(手続き型)のarg()と同等のものは次のとおりです。 1。

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

変更レコードが気づくように、常にそれが正しいコードであるとは限りません。コンテキストによっては、次のようなコードを使用する必要があります。

  • パスが管理ページ用かどうかを確認する

    _if (\Drupal::service('router.admin_context')->isAdminRoute()) {
      // Your code.
    }
    _
  • アクセスされているページに基づいて、CSSまたはJavaScriptを条件付きで追加する

    _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
      }
    }
    _
  • 現在表示されているノードをロードします

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

最初と最後のケースでは、Drupal 7では、arg()ではなく、それぞれpath_is_admin()menu_get_object()を使用する必要があります。 。一般的なbeginner-Drupal-developerエラーは、これらの場合にもarg()を使用しています。

10
kiamlaluno

ご覧ください 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

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()はdrupal 8で廃止予定ですが、arg()関数がdrupal 7&6で行うように、

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

出力は、basepathまたは(baseurl)を除くurlのパラメーターになります。

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