2013-03-15 104 views
3

我想fetch extension attributesyii.如何獲得

防爆的任何擴展以下擴展屬性:

$this->widget('xupload.XUpload', array(
      'url' => Yii::app()->createUrl("site/upload", array("parent_id" => 1)), 
      'model' => $model, 
      'attribute' => 'file', 
      'multiple' => true, 
      'options' => array('submit' => 'js:function(){ 

      }') 
     )); 

我想獲取上述擴展的假設URL中提交的選項,但功能如何?

+0

因此,例如,你想要像'$ {url}'這樣的東西放到你的'js:function ...'字符串中嗎?並由Yii把它變成實際的url值? – 2013-03-15 07:41:30

+0

@ PeterM-沒有得到正確的..錯誤生成...你可以給我適當的語法來獲得價值。 – harsh4u 2013-03-15 07:45:04

+0

你應該用所需的值創建一個js var,或者從widget生成的html代碼中獲取值(顯示我們)。 – soju 2013-03-15 08:18:11

回答

2

這不會是可能訪問該URL,或延伸的任何其他屬性,當擴展被初始化。但是我們可以在窗口小部件初始化後訪問屬性

當您撥打$this->widget('extension', array(...));​​3210時,所以在數組中傳遞的選項不能立即在另一個選項中使用。在您的情況下,您正在嘗試訪問屬性options內的屬性url

要使用我們的財產:

  1. 商店後,它已被初始化,像小部件的引用:

    $xwidget = $this->widget('extension', array(...)); 
    
  2. 然後使用/訪問屬性:

    $xwidget->propertyname; 
    

For:您的具體情況,當你想通過屬性設置爲一個js函數,你會另外必須做到以下幾點:

  1. 而不是通過一個匿名函數的submit選項,傳遞一個函數引用:

    'options' => array('submit' => 'submitHandler') 
    
  2. 然後要麼註冊一個腳本registerScript或直接使用HTML標籤<script>,並在其訪問控件的屬性:

    Yii::app()->clientScript->registerScript('script-id',' 
        function submitHandler() { 
         var url = "'. $xwidget->url .'"; // this is how we can insert the property into js 
         // ... more code ... 
        }', 
        CClientScript::POS_END// the position of the script 
    ); 
    
+0

Harsh4u,我做了一些編輯,以更好地解釋解決方案,一定要檢查出來。 – 2013-03-16 04:54:35