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()
を使用しています。
ご覧ください 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
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
)