Làm cách nào để đặt biến cho biến_get ()?


9

Tôi đang cố gắng để hiểu variable_get(). Tôi đã đọc cho đến nay bạn có thể đặt các biến trong settings.php bằng cách sử dụng $confmảng và truy xuất chúng sau này bằng mã bằng cách sử dụng variable_get(). Tôi đã đọc rằng bạn cũng có thể sử dụng variable_get()để lấy các giá trị từ cơ sở dữ liệu.

Cái này hoạt động ra sao?
Có một bảng được xây dựng tự động?
Làm thế nào bạn sẽ đặt biến nếu tính năng này là có thể?

Câu trả lời:


25

Có thể bạn hy vọng biết rằng biến_set là cách kỳ diệu để lưu trữ tất cả các loại dữ liệu có cấu trúc trong cơ sở dữ liệu của bạn và biến_get đó là cách để lấy lại dữ liệu. Thật không may, nó không phải là.

"Các biến liên tục", như chúng thường được gọi, có nghĩa là các cặp giá trị khóa tương đối đơn giản nên tồn tại trên các yêu cầu, người dùng và phiên, thường cho đến khi quản trị viên trang web thay đổi giá trị. Một ví dụ điển hình là tên trang web.

Vì vậy, làm thế nào nó hoạt động?

Khi Drupal được bootstrapping, tất cả các biến được đọc từ bộ đệm (nếu có) hoặc từ bảng biến. (Xem biến_initialize để biết mã chính xác.) Các biến và được lưu trữ trong $confbiến toàn cục, một mảng rất lớn. Drupal thực hiện điều này bởi vì nó hiệu quả hơn so với thực hiện truy vấn cơ sở dữ liệu mỗi khi cần một biến. (Đó cũng là lý do tại sao biến_set không phù hợp với các đốm dữ liệu lớn: chúng sẽ được tải theo mọi yêu cầu!)

Bất cứ khi nào bạn sử dụng variable_get('variable_name', 'default_value'), tên biến được tra cứu trong mảng $ conf. Nếu nó tồn tại, giá trị được trả về; khác, giá trị mặc định được trả về.

Cuối cùng, có một thành viên thứ ba trong gia đình: biến_del . Như tên ngụ ý, điều này xóa một biến khỏi bảng biến. Hàm này thường được sử dụng trong triển khai hook_uninstall , xóa các biến khi mô-đun được gỡ cài đặt.

Nếu bạn đang tìm cách lưu trữ các cấu trúc dữ liệu tùy chỉnh phức tạp hơn trong cơ sở dữ liệu, hãy xem hook_schemadrupal_write_record hoặc sử dụng hệ thống thực thể Drupal và API thực thể .


7
Một lưu ý quan trọng khác là variable_set()làm cho bộ đệm biến đổi được xây dựng lại, do đó, đây là thứ thường được dành riêng cho dữ liệu khá lâu dài và nhất quán như cài đặt quản trị viên và tương tự. Hoặc, đặt một cách khác, nó không nên được sử dụng thay vì hoặc giống như các biến tĩnh giữa các chức năng thay đổi trong quá trình xây dựng trang.
Jimajamma

5

Nếu bạn đang sử dụng Drush (khuyến khích mạnh mẽ), bạn có thể phát hành drush vget > variables.txttừ dòng lệnh để tạo tệp văn bản với danh sách tất cả các biến hiện tại và giá trị của chúng. Tương tự, bạn có thể sử dụng drush vsetđể thay đổi đặt bất kỳ biến nào thành một giá trị khác.

Xem GitHub để biết thêm chi tiết về variable-get, variable-setvà các lệnh hữu ích khác.


3

Để đặt biến, bạn sẽ sử dụng biến_set () . Sau đó, bạn có thể truy xuất chúng bằng biến_get () . Bạn nên làm quen với trang web Drupal API.

Các biến, nếu được lưu trữ, có thể được tìm thấy trong bảng biến.


Không rõ ràng từ thảo luận ở trên làm thế nào để thiết lập biến trong mô-đun tùy chỉnh. Vậy làm thế nào để thiết lập biến từ mô-đun tùy chỉnh?
Fawwad

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.