2012-01-27 36 views
5

Tôi có tệp php có một số biến địa phương và toàn cầu (ví dụ: $ foo)
đối tượng thông minh được gọi từ tệp này.
Làm cách nào để truy cập $ foo từ tập lệnh thông minh mà không thay đổi tệp PHP?Truy cập tệp biến (cục bộ hoặc toàn cục) của PHP từ smarty

Cảm ơn

+1

Bạn cần gán biến cho đối tượng thông minh hoặc thông minh sẽ không thể truy cập vào biến đó. Không có cây đũa thần nào để giải quyết chuyện này. – rdlowrey

Trả lời

4

Bạn không thể. Bạn phải gán nó cho smarty trong tệp PHP.

$smarty->assign('foo', $foo); 
8

Nếu bạn có một biến liên tục gọi BASE, và được xác định như thế này:

define('BASE', 'Boise'); 

bạn có thể truy cập vào biến trong smarty theo cách sau:

$smarty.const.BASE 
5

Bạn đã từng là có thể giải quyết vấn đề này bằng cách sử dụng các thẻ {php}{/php} nhưng vì điều này không được chấp nhận, giờ đây bạn phải gán các biến của mình qua $smarty->assign(), ngoại lệ duy nhất cho điều này là hằng số và variabl của máy chủ es mà bạn vẫn có thể truy cập trực tiếp thông qua đối tượng $smarty.

(Bạn cũng có thể bật lại các thẻ {php} nếu bạn muốn và không quan tâm đến lý do bảo mật tiềm ẩn mà chúng đã bị vô hiệu hóa ngay từ đầu).

Bất kỳ của các biến theo yêu cầu như $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV$_SESSION có sẵn thông qua các đối tượng $smarty.

Do điều này - hầu hết dữ liệu tôi làm việc với chỉ có thể được truy cập thông qua đối tượng $smarty mà không phải tạo một tấn (sao chép) biến.

Eg .:

  • Tiếp cận một hằng số: {$smarty.const.MY_CONST_VAL}
  • Truy cập vào một var $ _SERVER: {$smarty.server.REQUEST_METHOD} // Everything in $_SERVER có thể truy cập
  • Nắm lấy cái gì đó từ $ _SESSION: {$smarty.session.MY_SESSION_VAL} // Everything in $_SESSION có sẵn
Các vấn đề liên quan