2013-03-15 3 views
3

Я хочу fetch extension attributes значение в любом расширении yii.Как получить атрибуты расширений

Ex Ниже:

$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 ...'? И чтобы превратить его в фактическое значение URL Yii? – 2013-03-15 07:41:30

+0

@ PeterM- не получается должным образом .. генерировать ошибку ... может уставить мне правильный синтаксис для получения значения. – harsh4u

+0

Вы должны создать js var с необходимым значением или получить значение из созданного виджета html-кода (показать нам). – soju

ответ

2

Это будет возможно получить доступ к 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> тег, и доступ к свойству виджета в нем:

    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, я сделал несколько изменений, чтобы лучше объяснить решение, обязательно проверьте его. –

Смежные вопросы