ارسال پارامتر به کامپوننت

با سلام و خسته نباشید

کامپوننتی نوشتم که در متد

Run

کد زیر قرار دارد:

public function run()


{


	$root='C:\server\htdocs\gallery\images'; 


	$imgarray= getDirectoryList($root);


	$this->render('gallery',array('imgarray'=>$imgarray));


}

میخوام مقدار

$root

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

$this->widget(‘gallery’);

چطور این کار رو انجام بدم؟

به صورت زیر نوشتم خطا داد:

$this->widget(‘gallery’,array(‘root’=>‘C:\server\htdocs\gallery\images’));

اما اگر نام تابع

run

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

Yii::import("application.components.gallery.*");

$gallery = new gallery();

$gallery->rungallery(‘C:\server\htdocs\gallery\images’);

چرا روش اول خطا می دهد؟

[rtl]

باید $root رو به عنوان پروپرتی تعریف کنی بعد مقدار دهیش کنی

در ضمن برای راست به چپ نوشتن از

[rtl]

و برای قرار دادن کدهاتون از

[code]

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

[/rtl]

[rtl]

اوکی ممنون… میشه یک مثال بزنید چطور این کار رو انجام بدم؟

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

متد run , initهر کدوم در کامپوننت به چه کاری میاد؟

با تشکر

[/rtl]

[rtl]

منظورت از کامپوننت همون widget هستش یا …؟

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

[/rtl]

[rtl]

ساخت widget رو از لینک زیر مطالعه کردم:

http://yiitutorials.net/easy/creating-a-widget-with-the-yii-framework

طریقه ارسال پارامتر رو به صورت زیر گفته:




$this->widget('WidgetName',array('userId'=>$userId)); 



موفق نشدم از این طریق متغییری ارسال و در widget دریافت کنم

این widget قراره ادرس یک فولدر رو بگیره تصاویر داخلش رو لیست و در یک ارایه به view مربوط به widget ارسال کنه و در اونجا تصاویر نمایش داده بشه

این کار رو کردم ولی نمیدونم widget که نوشتم اصولی هست یا نه؟ چون تو نمونه هایی که دیدم توابعی با نام run و init تعریف شده و من این دو تابع رو در widget ندارم

[/rtl]

[rtl]

برای نوشتن این چیزی که می خوایی از این استفاده کن

[/rtl]




<?php

class myWidget extends CWidget

{

	public $root;

	

	public function run()

	{

		//your code

	}

}

?>



[rtl]

متد init هم وقتی widget رو فراخوانی میکنه اجرا میشه

فکر کنم اینجا واضح توضیح داده

http://www.yiiframework.com/doc/guide/1.1/en/basics.view#widget

[/rtl]