如何使用变量的值在Yii中创建URL


How to create a URL in Yii using value of a variable

我用这几行为更新按钮创建一个URL。

'url'=>'$this->grid->controller->createUrl("/testSettings/update", array("id"=>$data->Id,"approval"=>0))' 

这很好,因为我已经对值进行了硬编码以供批准。现在我必须用另一个变量$approvement的值来更改这个0。我该怎么做。即我必须给这个

'url'=>'$this->grid->controller->createUrl("/testSettings/update", array("id"=>$data->Id,"approval"=>$approval))' 

以下是表单的附加代码

<form action="index.php">         
<?php $approval = Yii::app()->request->getParam('approval',"0");?>    
<?php echo CHtml::radioButtonList('approval',$approval,array('0'=>'Greetings Approval','1'=>'Contact Approval'),array(
    'labelOptions'=>array('style'=>'display:inline'),
    'onclick' => 'this.form.submit()', 
    'separator'=>''));     ?>
<?php echo CHtml::hiddenField('r', 'testSettings/admin'); ?>     
</form> 

有两种可能的方法:

  1. 您可以在模型("$data"对象的类)中创建一个名为"isApproved()"的方法,该方法根据您的逻辑返回true或false。然后你可以说

    'url'=>'$this->grid->controller->createUrl("/testSettings/update", array("id"=>$data->Id,"approval"=isApproved()))'
    
  2. 如果$approval变量设置在您的视图中的某个位置(这不是一个好的做法),那么您也可以使用类似的闭包

    'url'=> function($data) use ($approval) { return CController::createUrl("/testSettings/update", array("id"=>$data->Id,"approval"=>$approval) }