3

我想fetch extension attributes重视任何扩展yii.

例如以下:

$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,但如何?

4

1 回答 1

2

初始化扩展时,将无法访问 url 或扩展的任何其他属性。但是我们可以在小部件初始化后访问该属性。

当您调用$this->widget('extension', array( ... ));部件时正在初始化,因此数组中传递的选项不能立即在另一个选项中使用。在您的情况下,您正在尝试访问 propertyurl内的 property options

要使用该属性,我们必须:

  1. 在初始化后存储对小部件的引用,例如:

    $xwidget = $this->widget('extension', array( ... ));
    
  2. 然后使用/访问一个属性:

    $xwidget->propertyname;
    

对于您想要将属性传递给 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
    );
    
于 2013-03-15T08:58:33.717 回答