2015-05-08 1 views
0

Я получил ошибку Объект класса закрытия не может быть преобразован в строку на этот кодYii2 Объект класса закрытия не может быть преобразован в строку

'class' => \dosamigos\grid\EditableColumn::className(), 
      'attribute' => 'remidi3', 
      'url' => function($data){return ['update?id=remidi3&dataid'.$data->id];}, 
      'type' => 'text', 
      'editableOptions' => [ 
       'mode' => 'inline', 
      ] 

даже я пытаюсь изменить

'url' => function($data){return ['update?id=remidi3&dataid'.$data->id];} 

в

'url' => function($data){return 'update?id=remidi3&dataid'.$data->id;}, 

Мне нужно, чтобы отобразить идентификатор в URL редактируемой сетки, кто-нибудь может мне помочь?

ответ

2

В соответствии с исходным кодом и PHPDoc вы не можете указать здесь закрытие.

PHPDoc говорит:

/** 
* @var string the url to post 
*/ 
public $url; 

Использование в исходном коде:

if ($this->url === null) { 
    throw new InvalidConfigException("'Url' property must be specified."); 
} 

... 

$url = (array) $this->url; 
$this->options['data-url'] = Url::to($url); 

Как вы можете видеть, он преобразуется в массив, а затем обрабатываются Url::to(), поэтому допустимые типы строк и массив.

Я не думаю, что вам нужно указать id в url, это должно быть принято автоматически в зависимости от того, с какой строкой вы работаете.

+0

Мне нужен идентификатор, потому что я могу получить идентификатор автоматически, возможно, другим способом вместо анонимной функции? – adeade

+0

Нет другого способа, кроме указания его как 'string' /' array'. См. Документы для 'Url :: to()'. Подробнее о том, как работает это расширение, я уверен, что идентификатор будет автоматически выбран из строки, с которой вы работаете, потому что он хранится в атрибуте 'data-pk' родительского' tr'. – arogachev

+1

спасибо, я понял – adeade