এইচটিটিপি হ্যান্ডলিংয়ের জন্য আমার সমতুল্য ফাংশনগুলি কী ব্যবহার করা উচিত?


17

দ্রুপাল for এর জন্য এইচটিটিপি হ্যান্ডলিং পৃষ্ঠায় তালিকাভুক্ত ফাংশনগুলি দেখে, আমি লক্ষ্য করেছি যে নিম্নলিখিত ফাংশনগুলি দ্রুপাল ৮ এ আর নেই ( ফাংশন অনুপস্থিত।)

এর পরিবর্তে দ্রুপাল 8 এ আমার কোন কার্য / পদ্ধতি ব্যবহার করা উচিত?


1
এই প্রশ্নটি দ্রুপাল and এবং দ্রুপাল ৮ এর মধ্যে পার্থক্য সম্পর্কে প্রশ্নগুলির একটি সিরিজের অংশ
কিমলালুনো

উত্তর:


16

এগুলি ফাংশন / পদ্ধতি / শ্রেণি যা দ্রুপাল 8.6.x কোডে ব্যবহার করা উচিত।

  • drupal_access_denied()অ্যাক্সেসডিনিডএইচটিপিএক্সসেপশন ক্লাস থেকে প্রতিস্থাপন করা হয়েছে । যে পৃষ্ঠা কলব্যাকগুলিতে অ্যাক্সেস অস্বীকৃত ত্রুটি ফিরে আসতে হবে তাদের নীচের কোডের মতো কোড ব্যবহার করা উচিত।

    // system_batch_page()
    public function batchPage(Request $request) {
      require_once $this->root . '/core/includes/batch.inc';
      $output = _batch_page($request);
      if ($output === FALSE) {
        throw new AccessDeniedHttpException();
      }
      elseif ($output instanceof Response) {
        return $output;
      }
      elseif (isset($output)) {
        $title = isset($output['#title']) ? $output['#title'] : NULL;
        $page = [
          '#type' => 'page',
          '#title' => $title,
          '#show_messages' => FALSE,
          'content' => $output,
        ];
    
        // Also inject title as a page header (if available).
        if ($title) {
          $page['header'] = [
            '#type' => 'page_title',
            '#title' => $title,
          ];
        }
        return $page;
      }
    }
  • এর পরিবর্তে drupal_get_query_array()সেখানে parse_query()( GuzzleHttp\Psr7নেমস্পেসের একটি ফাংশন ) রয়েছে যা গুজলের অংশ।

  • drupal_goto()RedirectResponseক্লাস থেকে প্রতিস্থাপন করা হয়েছে । পৃষ্ঠা কলব্যাক যা ব্যবহারকারীদের পুনঃনির্দেশ করতে হবে তাদের নীচের কোডের মতো কোড ব্যবহার করা উচিত। (লক্ষ্য করুন যে ফর্ম জমা দেওয়ার হ্যান্ডলারের এই শ্রেণিটি ব্যবহার করা উচিত নয়))

    // AddSectionController::build()
    public function build(SectionStorageInterface $section_storage, $delta, $plugin_id) {
      $section_storage
        ->insertSection($delta, new Section($plugin_id));
      $this->layoutTempstoreRepository
        ->set($section_storage);
      if ($this->isAjax()) {
        return $this->rebuildAndClose($section_storage);
      }
      else {
        $url = $section_storage->getLayoutBuilderUrl();
        return new RedirectResponse($url->setAbsolute()->toString());
      }
    }
  • drupal_http_request()একটি ড্রুপাল 8 পরিষেবা থেকে প্রতিস্থাপন করা হয়েছে যা ক্লায়েন্টইন্টারফেস ইন্টারফেস প্রয়োগ করে । ড্রুপাল 8 কোড নিম্নলিখিত একটির মতো হওয়া উচিত।

    // system_retrieve_file()
    try {
      $data = (string) \Drupal::httpClient()->get($url)->getBody();
      $local = $managed ? file_save_data($data, $path, $replace) : file_unmanaged_save_data($data, $path, $replace);
    } catch (RequestException $exception) {
      \Drupal::messenger()->addError(t('Failed to fetch file due to error "%error"', ['%error' => $exception->getMessage()]));
      return FALSE;
    }
  • drupal_not_found()নটফাউন্ডহট্টপ্যাক্সেশন ক্লাস থেকে প্রতিস্থাপন করা হয়েছে । পৃষ্ঠা কলব্যাকগুলি নিম্নলিখিত কোডের মতো কোড ব্যবহার করা উচিত।

    // BookController::bookExport()
    public function bookExport($type, NodeInterface $node) {
      $method = 'bookExport' . Container::camelize($type);
    
      // @todo Convert the custom export functionality to serializer.
      if (!method_exists($this->bookExport, $method)) {
        $this->messenger()->addStatus(t('Unknown export format.'));
        throw new NotFoundHttpException();
      }
      $exported_book = $this->bookExport->{$method}($node);
      return new Response($this->renderer->renderRoot($exported_book));
    }
  • drupal_site_offline() নিম্নলিখিত ইভেন্টের মতো একটি ইভেন্টের গ্রাহক দ্বারা প্রতিস্থাপন করা উচিত।

    public static function getSubscribedEvents() {
      $events[KernelEvents::REQUEST][] = ['onKernelRequestMaintenance', 30];
      $events[KernelEvents::EXCEPTION][] = ['onKernelRequestMaintenance'];
      return $events;
    }
    
    public function onKernelRequestMaintenance(GetResponseEvent $event) {
      $request = $event->getRequest();
      $route_match = RouteMatch::createFromRequest($request);
      if ($this->maintenanceMode->applies($route_match)) {
        // Don't cache maintenance mode pages.
        \Drupal::service('page_cache_kill_switch')->trigger();
        if (!$this->maintenanceMode->exempt($this->account)) {
          // Deliver the 503 page if the site is in maintenance mode and the
          // logged in user is not allowed to bypass it.
          // If the request format is not 'html' then show default maintenance
          // mode page else show a text/plain page with maintenance message.
          if ($request->getRequestFormat() !== 'html') {
            $response = new Response($this->getSiteMaintenanceMessage(), %03, ['Content-Type' => 'text/plain']);
            $event->setResponse($response);
            return;
          }
          drupal_maintenance_theme();
          $response = $this->bareHtmlPageRenderer->renderBarePage([          '#markup' => $this->getSiteMaintenanceMessage()], $this->t('Site under maintenance'), 'maintenance_page');
          $response->setStatusCode(503);
          $event->setResponse($response);
        }
        else {
          // Display a message if the logged in user has access to the site in
          // maintenance mode. However, suppress it on the maintenance mode
          // settings page.
          if ($route_match->getRouteName() != 'system.site_maintenance_mode') {
            if ($this->account->hasPermission('administer site configuration')) {
              $this->messenger->addMessage($this
          ->t('Operating in maintenance mode. <a href=":url">Go online.</a>', [':url' => $this->urlGenerator->generate('system.site_maintenance_mode')]), 'status', FALSE);
            }
            else {
              $this->messenger->addMessage($this->t('Operating in maintenance mode.'), 'status', FALSE);
            }
          }
        }
      }
    }
    • drupal_encode_path() দ্বারা প্রতিস্থাপিত হয়েছে UrlHelper::encodePath()
    • drupal_get_query_parameters() দ্বারা প্রতিস্থাপিত হয়েছে UrlHelper::filterQueryParameters()
    • drupal_http_build_query()দ্বারা প্রতিস্থাপন করা হয়েছে UrlHelper::buildQuery(), যা একবার ড্রুপাল কোরকে কমপক্ষে পিএইচপি 5.4 লাগানোর পরে অপসারণ করা হবে (সেই সময়ে, এটি সরাসরি ব্যবহার করা সম্ভব হবে http_build_query()))
    • drupal_parse_url() দ্বারা প্রতিস্থাপিত হয়েছে UrlHelper::parse()

লক্ষ্য করুন যে, পূর্ববর্তী দ্রুপাল সংস্করণগুলির সাথে তুলনা করে কিছু গুরুত্বপূর্ণ পরিবর্তন রয়েছে। উদাহরণস্বরূপ, কিছু পদ্ধতি যা Urlক্লাসে ছিল সেগুলি ক্লাসে সরানো হয়েছে UrlHelper; কিছু গুজল ক্লাস আর ব্যবহার করা হয় না।


কিছু এপিআই লিঙ্ক মারা গেছে।
rudolfbyker

এটি সম্ভবত ফাংশনগুলি ড্রুপাল কোর থেকে সরানো হয়েছে। আমি কোন লিঙ্কগুলি মারা গেছে তা যাচাই করে সেগুলি সরিয়ে দেব।
কিমলালুনো

দেখে মনে হচ্ছে কিছু লিঙ্কগুলি আর বৈধ নয়, তবে শ্রেণি / ফাংশন / পদ্ধতি এখনও বিদ্যমান। তারা কেবল লিঙ্ক ফর্ম্যাট পরিবর্তন করে, বা শ্রেণি / ফাংশন / পদ্ধতিটি অন্য কোনও ফাইলে সরানো হয়েছে।
কিমলালুনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.