Thursday, July 14, 2011

Membuat Box Bahasa dan memanggilnya di setiap halaman web dibuka

Langkah pertama adalah kita mengubah baris kode pada configurasi pada main.php, menjadi


return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'name'=>'Toko Onlineku',
'language'=>'id', // id jika ingin menjadikan default bahasa yang di pakai indonesia
// eg jika Bahasa inggris



dan nantinya kita bisa memanggilnya:


Yii::app()->language


Selanjutnya di kita buat komponent file pada directory component, sebut saja nama file controllernya LangBox.php


<?php
// controller untuk Language Box
class LangBox extends CWidget {
   
    public function run(){
        $currlang = Yii::app()->language; // ambil settingan bahasa yang ada sekarang
        $this->render('langBox',array('currentLang'=> $currlang)); // tampilkan di view
    }
   
}
?>
kemudian pada directory: components->view kita buat file langBox.php
<?php echo CHtml::form();
?>
    <div id="langdrop">
        <?php echo CHtml::dropDownList('_lang', $currentLang, array(
            'en' => 'English', 'id' => 'Indonesia','ru' => 'Rusia'), array('submit' => '')) ?>
    </div>
</form>

setelah itu kita buat class LayoutHandler agar bisa di panggil setiap halaman di buka:
<?php
// handle Layout initial request

// When Application started this the first step to do

class LayoutHandler extends CApplicationComponent {
   
    public function init(){

       parent::init();
           $app = Yii::app();
        if (isset($_POST['_lang']))
        {
            $app->language = $_POST['_lang'];
            $app->session['_lang'] = $app->language;
        }
        else if (isset($app->session['_lang']))
        {
            $app->language = $app->session['_lang'];
        }
}
?>


kemudian simpan di directory components.
dan selanjutnya kita modifikasi lagi bagian main.php (configation) menjadi:



return array(
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
    'name'=>'Toko Onlineku',
    'language'=>'id',

    // preloading 'log' component
    'preload'=>array('log','layoutHandler'),

    'components'=>array(
       
        'layoutHandler'=>array(
                'class'=>'LayoutHandler',
            ),



dan selanjutnya untuk menampilkan box language panggil dengan perintah:

<?php $this->widget('LangBox'); ?>

No comments:

Post a Comment