Yii Framework Forum: Задать url для actionColumn в gridView - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Задать url для actionColumn в gridView Rate Topic: -----

#1 User is offline   Maksimus1991 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 05-May 16
  • Location:St.Petersburg

Posted 21 September 2016 - 02:56 AM

Всем привет, подскажите, как можно задать свой url для actionColumn в gridView в yii2?

На сколько я понимаю для этого там есть две функции, первая:

'buttons' => [
   'update' => function ($url, $model, $key) {

      return Html::a('', $url, ['class' => 'glyphicon glyphicon-pencil']);

   }
],


Здесь можно для ссылки создать свой url или использовать url получаемый функцией в качестве параметра - по умолчанию он создается функцией urlCreator и равен /module/controller/action, либо можно в функции urlCreator, создать свой url:

'urlCreator' => function ($action, $model, $key, $index) {
   ...

   return $updateUrl;

}


Но я хочу создать url типа /test-1/question-1/answer-1, для этого мне не достаточно данных конкретной модели (answer), так как мне нужно знать не только id ответа (answer), но и id вопроса и теста. В само представление я эти параметры передаю, но как их передать в эти функции? В эти функции уже передаются другие параметры, и добавить новые не выходит, да и подменить тоже не получается, если допустим сделать так:

'buttons' => [
   'update' => function ($myUrl, $model, $key) {

      return Html::a('', $myUrl, ['class' => 'glyphicon glyphicon-pencil']);

   }
],

То все равно в функции $myUrl равен не тому url который я создал а url созданному по умолчанию функцией urlCreator. В общем вопрос в том, как в любую из этих функций передать дополнительные параметры?
0

#2 User is offline   Maksimus1991 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 05-May 16
  • Location:St.Petersburg

Posted 21 September 2016 - 06:04 AM

Вопрос решен. Помогли в русском сообществе yii.

'buttons' => [
   'update' => function ($url, $model, $key) use($myVariable) {
    
      return Html::a('', ['/module/controller/action', 'param' => $myVariable] ['class' => 'glyphicon glyphicon-pencil']);

   }
],


Оказывается для анонимных функций можно использовать use для присоединения чего либо из родительской области видимости (правда я так и не понял в деталях, что именно является родительской областью видимости).
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users