ehsan
(E Javanshir)
April 28, 2011, 6:06am
1
[right]سلام دوستان
می خوام یه صفحه ویرایش رو با استفاده از
juiwidget
بسازم
مسیله اینجاست که چطوری یه سری داده به این صفحه پاس بدم
مثلا تغییر نام یک فایل رو در نظر بگیرید
می خوام وقتی در جدولی که نام فایلها رو نشون می ده روی لینک ویرایش کلیک کرد یه صفحه ویرایش باز بشه
و در اون صفحه نام فایل رو به صورت پیش فرض نشون بده
[/right]
bamdadd
(Bamdadd)
April 28, 2011, 6:48am
2
[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
ehsan
(E Javanshir)
April 28, 2011, 7:08am
4
[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]
alireza
(Alireza Ahmadi 90)
April 28, 2011, 7:16am
5
[font="Tahoma"][right]این
juiwidget
اصلا چی هست؟[/right][/font][size="2"][/size]
bamdadd
(Bamdadd)
April 28, 2011, 7:18am
6
[right]من امروز برای پروژه خودم می خواهم از این افزونه یی استفاده کنم ، اگر بهم فرصت بدی تا شب جوابتو میدم ، امیودوارم البته خودت زودتر به جواب برسی[/right]
bamdadd
(Bamdadd)
April 28, 2011, 7:19am
7
یه
extension
هستش که با استفاده از اون می تونی از ویژگی های
jQuery UI
در پروژه ییی خودت استفاده کنی
http://www.yiiframework.com/extension/jui
[right]سلام احسان.
jui
تو خود فریم ورک هست. لازم نیست که حتما از
extension
خاصی استفاده کنی. تو آدرس :
zii.widgets.jui
وجود داره[/right]
bamdadd
(Bamdadd)
April 28, 2011, 9:18am
9
[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
کلی کمک کرد
mtoloo
(Mtoloo)
April 30, 2011, 5:41am
10
[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]
echo CHtml::beginForm();
echo Chtml::textField('filename' , $test);
echo Chtml::ajaxSubmitButton('test',Yii::app()->request->baseUrl.'/site/test');
echo CHtml::endForm();
[right]
در صفحه ای که لیست فایلها رو نشون می ده جدول گذاشتم
در هر سطر جدول این لینک وجود دارد
[/right]
$rename = CHtml::link('rename', '#', array(
'onclick' => '$("#renameDialog").dialog("open"); return false;',
));
در اینجا هم به جای لینک عادی از لینک آژاکس استفاده کن. همچنین مشخص کن که پاسخ سرور کجا ریخته بشه:
<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]