ارسال پارامتر به juiwidget

[right]سلام دوستان

می خوام یه صفحه ویرایش رو با استفاده از

juiwidget

بسازم

مسیله اینجاست که چطوری یه سری داده به این صفحه پاس بدم

مثلا تغییر نام یک فایل رو در نظر بگیرید

می خوام وقتی در جدولی که نام فایلها رو نشون می ده روی لینک ویرایش کلیک کرد یه صفحه ویرایش باز بشه

و در اون صفحه نام فایل رو به صورت پیش فرض نشون بده

[/right]

اول بگو ببینم خودت تا کجا پیش رفتی

[right]سلام

دوست عزیز منظورتو کامل متوجه نشدم. ممنون می شم یکم بیشتر برام توضیح بدی اما در کل میتونی از قابلیت آجاکس این افزونه استفاده کنی برای ذخیره سازی داده هات و ارسال اونا به کنترل و اگر هم می خوای فیلد هاتو مقدار دهی اولیه کنی هم با همین آجاکس میشه این .کارو کرد[/right]

[right]و با این روش می تونی مقدار دهی هاتو توی ویو انجام بدی[/right]

[right]این نمونه کد آجاکس هستش. امیدوارم کمکت کنه.[/right]




<?php

$this->widget('application.extensions.jui.ETabs',

              array(

                    'name'=>'tabpanelSample',

                    'ajaxTabs'=>array(

                                      array('title'=>'Hello World', 'url'=>'http://localhost/demos/helloworld'),

                                      array('title'=>'Blog', 'url'=>'http://localhost/demos/blog'),

                                     )

                   )

             );

?>



[right]

باز برو تو داکیومنتیشن همین افزونه. توش اطلاعات مفیدی هست[/right]

Document

[right]

برای ویرایش نام فایل

من به اینجا رسیدم که

در کنترلر مربوطه یه اکشن و فایل اسکریپت مربوطه رو ساختم

داخل این فایل این رو نوشتم

[/right]


$this->beginWidget('zii.widgets.jui.CJuiDialog', array(

    'id'=>'renameDialog',

    // additional javascript options for the dialog plugin

    'options'=>array(

        'title'=>'Rename',

        'autoOpen'=>false,

    ),

));


    echo Chtml::textField('filename' , $filename);


$this->endWidget('zii.widgets.jui.CJuiDialog');

[right]

در صفحه ای که لیست فایلها رو نشون می ده جدول گذاشتم

در هر سطر جدول این لینک وجود دارد

[/right]




        $rename = CHtml::link('rename', '#', array(

                    'onclick' => '$("#renameDialog").dialog("open"); return false;',

                ));



[right]

در این صفحه فایل

rename.php

رو هم

include

کردم

[/right]

[font="Tahoma"][right]این

juiwidget

اصلا چی هست؟[/right][/font][size="2"][/size]

[right]من امروز برای پروژه خودم می خواهم از این افزونه یی استفاده کنم ، اگر بهم فرصت بدی تا شب جوابتو میدم ، امیودوارم البته خودت زودتر به جواب برسی[/right]

یه

extension

هستش که با استفاده از اون می تونی از ویژگی های

jQuery UI

در پروژه ییی خودت استفاده کنی

http://www.yiiframework.com/extension/jui

[right]سلام احسان.

jui

تو خود فریم ورک هست. لازم نیست که حتما از

extension

خاصی استفاده کنی. تو آدرس :

zii.widgets.jui

وجود داره[/right]

[right]

خوب من کد رو زدم

امیدوارم مشکلت رو حل کنه

کارهایی که من کردمو به ترتیب می گم دیگه خودت روندو می بینی:

اومدم اول توی کنترلر

SiteContoller

یه متد با نام

Test

ساختم

که به دو صورت عمل می کنه اول برای درخواست های آژاکسی و بعدش هم برای درخواست های معمولی

یه آرایه به اسم

data

هم ساختم که توش داده هامو از کنترلر پاس بدم به ویو تو کد زیر می تونی ببینی

[/right]




public function actionTest(){

        if(Yii::app()->request->getIsAjaxRequest()){

            var_dump($_REQUEST);

            }

        else{

            $data=array('test'=>'test');

            $this->render('juitest',$data);

            }

        }



این هم قسمت ویو

یه فرم ساختم و بعد با آژاکس سابمیتش کردم





<? $this->beginWidget('zii.widgets.jui.CJuiDialog', array(

    'id'=>'renameDialog',

    'theme'=>'humanity',//age hamchin themi dari! nadari varesh dar

    // additional javascript options for the dialog plugin

    'options'=>array(

        'title'=>'Rename',

        'autoOpen'=>false,

    ),

));

    echo CHtml::beginForm(); 

    echo Chtml::textField('filename' , $test);

    echo Chtml::ajaxSubmitButton('test',Yii::app()->request->baseUrl.'/site/test');

    echo CHtml::endForm();





$this->endWidget('zii.widgets.jui.CJuiDialog');


   echo  CHtml::link('rename', '#', array(

                    'onclick' => '$("#renameDialog").dialog("open"); return false;',

    ));

   ?>



با تشکر از رامین عزیز که در قسمت

jQuery

کلی کمک کرد

[right]این و که برای فایل ویو نوشتین درسته و مشکلی نداره.

البته طبیعتا میدونین که کامل نیست. کاملش و میشه از پست بامداد جان استفاده کرد:

به جای یک فیلد نام فایل از این فرم استفاده کنید:[/right]


    echo CHtml::beginForm(); 

    echo Chtml::textField('filename' , $test);

    echo Chtml::ajaxSubmitButton('test',Yii::app()->request->baseUrl.'/site/test');

    echo CHtml::endForm();



در اینجا هم به جای لینک عادی از لینک آژاکس استفاده کن. همچنین مشخص کن که پاسخ سرور کجا ریخته بشه:


<div id='dialog' style="display: none"></div>

        $rename = CHtml::ajaxLink('rename', 

                array('/admin/file/rename', 'filename' => $attribs['name']),

                array(

                    'type' => 'post',

                    'update' => 'div#dialog');



[right]

الان من یک

div

به اسم دیالوگ گذاشتم و مشخص کردم که پاسخ صفحه داخل اون قرار بگیره.

قدم آخر داخل کترلر قبل از رندر باید

layout

و غیرفعال کنی.[/right]