2013-03-15 106 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