Điểm:-3

Mở tab mới với liên kết bên ngoài bằng nút hình ảnh

lá cờ cn

Tôi đang tạo mô-đun tùy chỉnh với biểu mẫu có nút hình ảnh. Nút hình ảnh sẽ mở liên kết bên ngoài với giá trị của trường văn bản bên trong biểu mẫu. Tôi đã tìm kiếm bất kỳ giải pháp khả thi nào trên internet nhưng không thể tìm ra giải pháp.

Làm cách nào để tôi mã hóa nút gửi Biểu mẫu để mở một liên kết bên ngoài có giá trị biểu mẫu của trường văn bản bên trong biểu mẫu.

Dưới đây là mã mẫu của tôi:

$form['search'] = [             
      '#type' => 'trường văn bản', 
      '#title' => 'Tìm kiếm',
      '#required' => ĐÚNG
];

$form['submit'] = [
    '#type' => 'image_button',
    '#value' => $this->t(''),
    '#src' => 'mô-đun/myModule/src/hình ảnh/myImage.png',
    '#submit' => ['::submitForm'],
];

Tôi cũng cố gắng sử dụng các mã này cho nút nhưng vẫn không gặp may:

$form['submit'] = [
    '#type' => 'mặt hàng',
    '#markup' => $this->t('
        <a href=\'https://www.google.com/search?%search\' target="_blank">
           <img width="30" height="30" border="0" align="center" src=\'modules/myModule/src/images/myImage.png\'/>
        </a>', ['%search' => $search]),
];

Xin lưu ý rằng đây không phải là mã thực của tôi nhưng đây là khái niệm về mã của tôi.

Mọi ý kiến ​​​​và đề xuất đều được chào đón.

Cảm ơn bạn trước.

Điểm:0
lá cờ de

Nếu bạn sử dụng mục tiêu biểu mẫu Thuộc tính HTML trên nút hình ảnh của bạn, quá trình gửi sẽ diễn ra trong tab trình duyệt mới. Đây là một ví dụ cơ bản:

chức năng công khai buildForm(mảng $form, FormStateInterface $form_state) {
  $form['search'] = [
    '#type' => 'trường văn bản',
    '#title' => $this->t('Tìm kiếm'),
    '#required' => ĐÚNG,
  ];

  $form['image_button'] = [
    '#type' => 'image_button',
    '#value' => 'xin chào',
    '#src' => '/đường dẫn/đến/của tôi/hình ảnh',
    '#submit' => ['::mySubmitFunction'],
    '#thuộc tính' => [
       // Thuộc tính này sẽ mở một tab trình duyệt mới khi gửi biểu mẫu
      'formtarget' => '_blank' 
    ]
  ];

  trả về biểu mẫu $;
}

hàm công khai validateForm(mảng &$form, FormStateInterface $form_state) {
  // Làm bất cứ điều gì xác nhận mẫu là cần thiết
}

hàm công khai mySubmitFunction(mảng &$form, FormStateInterface $form_state) {
  $search = $form_state->getValue('search'); // Lấy giá trị trường 'tìm kiếm'
  // vì chúng tôi muốn chuyển hướng đến một url bên ngoài, 
  // chúng ta cần sử dụng \Drupal\Core\Routing\TrustedRedirectResponse 
  // vì chuyển hướng đến URL bên ngoài không được phép theo mặc định
  $externalURL = \Drupal\Core\Url::fromUri('https://example.com', 
    ['truy vấn' => ['tìm kiếm' => $search]]
  );
  $response = new TrustedRedirectResponse($externalURL->toString());
  $form_state->setResponse($response);
}
Jeirod avatar
lá cờ cn
Cảm ơn bạn, @misterdidi. Tôi có một câu hỏi khác về mã của bạn. `truy vấn` trong `$externalURL` có được thêm vào https://example.com không? Vì vậy, nó sẽ là https://example.com`$search`?
misterdidi avatar
lá cờ de
Không, trong ví dụ của tôi, bạn sẽ nhận được URL https://example.com?search=my-search-value. Nếu bạn muốn một cái gì đó như https://example.com/my-search-value, bạn cần làm một cái gì đó như `$externalURL = \Drupal\Core\Url::fromUri('https://example.com/' . $ search);` (miễn là bạn đảm bảo rằng $search thân thiện với url).
Jeirod avatar
lá cờ cn
Cảm ơn, @misterdidi. Bây giờ tôi biết làm thế nào để làm cho nó xảy ra. Cảm ơn rất nhiều. Nó thực sự giúp tôi rất nhiều.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.