ارسال پارامتر به juiwidget
#1
Posted 28 April 2011 - 01:06 AM
می خوام یه صفحه ویرایش رو با استفاده از
juiwidget
بسازم
مسیله اینجاست که چطوری یه سری داده به این صفحه پاس بدم
مثلا تغییر نام یک فایل رو در نظر بگیرید
می خوام وقتی در جدولی که نام فایلها رو نشون می ده روی لینک ویرایش کلیک کرد یه صفحه ویرایش باز بشه
و در اون صفحه نام فایل رو به صورت پیش فرض نشون بده
#2
Posted 28 April 2011 - 01:48 AM
ehsanjs, on 28 April 2011 - 01:06 AM, said:
می خوام یه صفحه ویرایش رو با استفاده از
juiwidget
بسازم
مسیله اینجاست که چطوری یه سری داده به این صفحه پاس بدم
مثلا تغییر نام یک فایل رو در نظر بگیرید
می خوام وقتی در جدولی که نام فایلها رو نشون می ده روی لینک ویرایش کلیک کرد یه صفحه ویرایش باز بشه
و در اون صفحه نام فایل رو به صورت پیش فرض نشون بده
اول بگو ببینم خودت تا کجا پیش رفتی
#3
Posted 28 April 2011 - 01:57 AM
دوست عزیز منظورتو کامل متوجه نشدم. ممنون می شم یکم بیشتر برام توضیح بدی اما در کل میتونی از قابلیت آجاکس این افزونه استفاده کنی برای ذخیره سازی داده هات و ارسال اونا به کنترل و اگر هم می خوای فیلد هاتو مقدار دهی اولیه کنی هم با همین آجاکس میشه این .کارو کرد
و با این روش می تونی مقدار دهی هاتو توی ویو انجام بدی
این نمونه کد آجاکس هستش. امیدوارم کمکت کنه.
<?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'),
)
)
);
?>
باز برو تو داکیومنتیشن همین افزونه. توش اطلاعات مفیدی هست
Document
#4
Posted 28 April 2011 - 02:08 AM
bamdad dashtban, on 28 April 2011 - 01:48 AM, said:
برای ویرایش نام فایل
من به اینجا رسیدم که
در کنترلر مربوطه یه اکشن و فایل اسکریپت مربوطه رو ساختم
داخل این فایل این رو نوشتم
$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');در صفحه ای که لیست فایلها رو نشون می ده جدول گذاشتم
در هر سطر جدول این لینک وجود دارد
$rename = CHtml::link('rename', '#', array(
'onclick' => '$("#renameDialog").dialog("open"); return false;',
));
در این صفحه فایل
rename.php
رو هم
include
کردم
#6
Posted 28 April 2011 - 02:18 AM
#7
Posted 28 April 2011 - 02:19 AM
alireza, on 28 April 2011 - 02:16 AM, said:
juiwidget
اصلا چی هست؟
یه
extension
هستش که با استفاده از اون می تونی از ویژگی های
jQuery UI
در پروژه ییی خودت استفاده کنی
http://www.yiiframew...m/extension/jui
#8
Posted 28 April 2011 - 03:38 AM
jui
تو خود فریم ورک هست. لازم نیست که حتما از
extension
خاصی استفاده کنی. تو آدرس :
zii.widgets.jui
وجود داره
#9
Posted 28 April 2011 - 04:18 AM
خوب من کد رو زدم
امیدوارم مشکلت رو حل کنه
کارهایی که من کردمو به ترتیب می گم دیگه خودت روندو می بینی:
اومدم اول توی کنترلر
SiteContoller
یه متد با نام
Test
ساختم
که به دو صورت عمل می کنه اول برای درخواست های آژاکسی و بعدش هم برای درخواست های معمولی
یه آرایه به اسم
data
هم ساختم که توش داده هامو از کنترلر پاس بدم به ویو تو کد زیر می تونی ببینی
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
کلی کمک کرد
#10
Posted 30 April 2011 - 12:41 AM
ehsanjs, on 28 April 2011 - 02:08 AM, said:
برای ویرایش نام فایل
من به اینجا رسیدم که
در کنترلر مربوطه یه اکشن و فایل اسکریپت مربوطه رو ساختم
داخل این فایل این رو نوشتم
$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');این و که برای فایل ویو نوشتین درسته و مشکلی نداره.
البته طبیعتا میدونین که کامل نیست. کاملش و میشه از پست بامداد جان استفاده کرد:
به جای یک فیلد نام فایل از این فرم استفاده کنید:
echo CHtml::beginForm();
echo Chtml::textField('filename' , $test);
echo Chtml::ajaxSubmitButton('test',Yii::app()->request->baseUrl.'/site/test');
echo CHtml::endForm();
Quote
در صفحه ای که لیست فایلها رو نشون می ده جدول گذاشتم
در هر سطر جدول این لینک وجود دارد
$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');
الان من یک
div
به اسم دیالوگ گذاشتم و مشخص کردم که پاسخ صفحه داخل اون قرار بگیره.
قدم آخر داخل کترلر قبل از رندر باید
layout
و غیرفعال کنی.

Help













