PDA

View Full Version : مقدار دادن به value توی gridview، مشکل با متغیر $data



desatir7316
شنبه 17 خرداد 1393, 18:25 عصر
سلام دوستان و همیهنان گرامییی
ببنید
این مقدار برای value مشکلی نداره و اجرا می شه:

'value'=>'$data->item_id'
این مقدار هم که بهش می دم مشکلی نداره:

'value'=>'$data->item->category_id'


حالا این کلاس رو هم دارم که از تابع اش استفاده کردم:


class Helper {

public static function getString($inputList, $spaceCount = 3){

return implode(str_pad(' ', $spaceCount), $inputList);

}

}


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


'value'=> "Helper::getString(array(
\"<a href='".Yii::app()->createUrl('/item/view').'&id=$data->item_id'."'>\".
\"<img src='".Yii::app()->baseUrl."/image/categories/".'$data->item_id'. "'>\".
\"</a>\" ));",



ولی وقتی کد دوم رو استفاده می کنم :


'value'=> "Helper::getString(array( \"<a href='".Yii::app()->createUrl('/item/view').'&id=$data->item_id'."'>\".
\"<img src='".Yii::app()->baseUrl."/image/categories/".'$data->item->category_id'. "'>\".
\"</a>\" ));",



خطای زیر رو می ده:



Object of class Item could not be converted to string


چرا اینجوریه؟

desatir7316
دوشنبه 19 خرداد 1393, 20:57 عصر
دوستان من نتونستم این مشکل رو حل کنم

rezaonline.net
دوشنبه 19 خرداد 1393, 22:24 عصر
ببخشید اینا چیه داستانش کلا؟
چرا از CHtml::link استفاده نمیکنی ؟

desatir7316
سه شنبه 20 خرداد 1393, 08:02 صبح
اونم نهايتا تبدیل به تگ a مى شه، داستانشم اينه که چندتا رشته رو به صورت آرايه مى دى به getstring و اونم به صورت رشته اون خونه هاى آرايه رو به هم مى چسبونه و بر مى گردونه، به خاطر ورژن php که استفاده مى کنم نمى تونم ار anonymous functions ها استفاده کنم وگرنه اين مشکل به وجود نمى آمد

MMSHFE
سه شنبه 20 خرداد 1393, 08:45 صبح
شرمنده یه سؤال دارم. چرا اسامی فیلدها توی کوتیشن تک گذاشته شده؟ اینجوری که قاعدتاً نباید تفسیر بشه. لطفاً بطور دقیق بگین میخواین چه خروجی بگیرین تا راهنمایی کنیم. به احتمال زیاد راهی بهتر از این روشی که شما استفاده کردین وجود داشته باشه.

desatir7316
سه شنبه 20 خرداد 1393, 21:41 عصر
سلام ببینید، من قبلا از anonymous fun استفاده می کردم، ولی به علت ورژن php یی که روی هاست بود این نوع تابع پشتیبانی نشدمثلا این نمونه رو ببینید:

'value' => function($data) {
return
CHtml::link(
CHtml::image(Yii::app()->baseUrl . '/images/categories/' . $data->item->category_id . '/'. $data->item_id . '_tiny.jpg', '', array('style'=>'border-radius:5px')),
Yii::app()->createUrl('/item/view', array('id'=>$data->item_id))
)
.
CHtml::link(
$data->item->name,Yii::app()->createUrl('/item/view', array('id'=>$data->item_id)),
array('style'=>'padding:0 5px 0')
);
},
اینا اون مواردی هستن که می خوام توی خونه GRIDVIEW نشون داده بشه که به صورت رشته به هم متصل شدن و برگردونده شدن ، برای رفع مشکل اومدم کلاسی تعریف کردم که یه تابع داشته باشه و همین چیزارو توی ورودی به صورت آرایه بگیره، اونارو به هم بچسبونه و برگردونه که اون مشکل پیش اومد

desatir7316
سه شنبه 20 خرداد 1393, 21:56 عصر
ای بابا، من هرچی کد های پست بالا رو ویرایش می کنم بازم توی یه خط همشونو نشون می ده، خلاصه عذر می خوام

desatir7316
چهارشنبه 21 خرداد 1393, 07:02 صبح
شرمنده یه سؤال دارم. چرا اسامی فیلدها توی کوتیشن تک گذاشته شده؟ اینجوری که قاعدتاً نباید تفسیر بشه. .اسامى به صورت رشته براى تابع getstring ارسال مى شن، براى همىن توى کوتيشن گذاشته شدن، ولى هرجا لازم بئده به صورت پويا چيزى درون هر کدوم از اين رشته ها قرار بگيره، کوتيشن برداشته شده، از اين لحاظا مشکلى نيست،مشکل من اوت اروره که چرا وقتى همين کد رو با anonymous functions با ورودى $data استفاده مى کنم هيچ مشکلى نيست

MMSHFE
چهارشنبه 21 خرداد 1393, 09:52 صبح
ببینید، خطا داره میگه شما سعی کردین یک شئ از کلاس Item رو تبدیل به رشته کنید که نمیشه. باید کدتون رو اصلاح کنید و شئ رو بصورت رشته استفاده نکنید. مشکلتون رو هم با توابع بی نام نفهمیدم چون چیزی نیست که بشه غیرفعالش کرد.

desatir7316
چهارشنبه 21 خرداد 1393, 20:14 عصر
من نمی خوام چیزی رو به رشته تبدیل کنمدقیقا خطا روی این کد هست:
$data->item->category_idحالا من میام مقدار value رو اینجوری می دم:
'value'=>'var_dump($data->item->category_id)',خروجیش می شه:
string(1) "4" خوب این که خودش از نوع رشته است