Javascript dalam PRADO, Pertanyaan dan Jawaban

Bagaimana saya menyertakan librari Javascript yang didistribusikan dengan Prado?

Librari javascript yang didistribusikan dengan Prado dapat ditemukan dalam direktori framework/Web/Javascripts/source. File packages.php dalam direktori itu mendefinisikan daftar nama paket yang tersedia yang diambil. Itu bisa diambil seperti berikut.

Paket librari yang tersedia disertakan dalam Prado adalah

Ketergantungan masing-masing librari secara otomatis dipecahkan. Komponen yang memerlukan libari tertentu juga akan secara otomatis mengambil librari yang diperlukan. Sebagai contoh, jika Anda menambah komponen TDatePicker pada halaman, datepicker dan dependensinya akan secara otomatis disertakan pada halaman.

Lihat TClientScript untuk opsi penambahan kode Javascript kustom Anda ke halaman.

Menerbitkan Librari Javascript sebagai Assets

Gunakan TClientScriptLoader untuk menerbitkan dan menggabung file javascript yang sudah ada (misalnya librari javascript yang didistribusikan dengan Prado atau sebaliknya) sebagai paket.

Untuk kontrol yang lebih besar pada apa dan kapan untuk menerbitkan, gunakan metode registerJavascriptPackages($base, $packages, $debug=null, $gzip=true) dalam kelas TClientScriptManager, yang turunannya bisa diperoleh dengan $this->getPage()->getClientScript() atau persamaannya. Sebagai contoh, jika multipel kontrol akan memakai set librari javascript yang sama, tulis sebuah kelas untuk menangani registrasi paket yang diperlukan oleh kontrol tersebut.

class MyJavascriptLib extends TComponent { private $_packages=array(); //perlihara seluruh registrasi private $_manager; protected function __construct(TPage $owner) { $this->_manager = $owner->getClientScript(); $owner->onPreRenderComplete = array($this, 'registerScriptLoader'); } public static function registerPackage(TControl $control, $name) { static $instance; if($instance===null) $instance=new self($control->getPage()); $instance->_packages[$name]=true; } protected function registerScriptLoader() { $dir = dirname(__FILE__).'/myscripts'; //berisi file javascript $scripts = array_keys($this->_packages); $url = $this->_manager->registerJavascriptPackages($dir, $scripts); $this->_manager->registerScriptFile($url,$url); } } // contoh kelas kontrol menggunakan paket javascript class TestComp extends TControl { public function onPreRender($param) { parent::onPreRender($param); MyJavascriptLib::registerPackage($this,'package1'); } }
$Id: Scripts3.page 1902 2007-05-07 04:17:37Z wei $