【问题标题】:How to get attributes of extensions如何获取扩展的属性
【发布时间】:2013-03-15 06:37:28
【问题描述】:

我想在yii. 的任何扩展名中为fetch extension attributes 赋值

如下:

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

【问题讨论】:

  • 因此,例如,您希望将${url} 之类的内容放入您的js:function... 字符串中?并通过 Yii 将其变为实际的 url 值?
  • @PeterM- 没有正确获取.. 错误生成...你能给我正确的语法来获取价值吗?
  • 您应该创建一个具有所需值的 js var,或者从小部件生成的 html 代码中获取值(向我们展示)。
  • @harsh4u 这不是语法,我只是用它来澄清问题,我的评论中显示的语法不起作用。

标签: jquery yii yii-extensions


【解决方案1】:

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

当您调用$this->widget('extension', array( ... ));widget is being initialized 时,数组中传递的选项不能立即在另一个选项中使用。在您的情况下,您正在尝试访问属性 url 内的属性 options

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

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

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

    $xwidget->propertyname;
    

对于您想要将属性传递给 js 函数的确切场景,您将另外必须执行以下操作:

  1. 不要将匿名函数传递给submit 选项,而是传递函数引用:

    'options' => array('submit' => 'submitHandler')
    
  2. 然后要么注册一个带有registerScript的脚本,要么直接使用html <script>标签,并访问其中的widget的属性:

    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
    );
    

【讨论】:

  • Harsh4u,我做了一些修改以更好地解释解决方案,请务必查看。
猜你喜欢
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 2016-01-15
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
相关资源
最近更新 更多