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.
- Menambahkan librari dalam template
<com:TClientScript PradoScripts="effects" />
- Menambahkan librari dalam kode PHP
$this->getPage()->getClientScript()->registerPradoScript("effects");
Paket librari yang tersedia disertakan dalam Prado adalah
- prado : javascript dasar kerangka kerja PRADO berdasarkan Prototype
- effects : efek visual dari script.aculo.us
- ajax : terkait ajax dan callback bedasarkan Prototype
- validator : validasi
- logger : pencatat javascript dan browser obyek
- datepicker : datepicker
- colorpicker : colorpicker
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 my 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 $