【问题标题】:Yii link with [ as a parameterYii 以 [ 作为参数链接
【发布时间】:2013-04-21 13:05:08
【问题描述】:

通过 GII,我创建了一个记录列表。我使用管理视图,因此它们位于表格视图中。在表的顶部,它是带有记录状态的搜索。当状态下拉列表更改时,我提交表单并搜索表格。我希望管理员的默认视图仅显示活动记录,因此我想在菜单中创建指向此的链接: medium/admin/?Medium[status]=active 实际的链接当然是 medium/admin/?Medium%5Bstatus%5D=active

我尝试过这样做:

CHtml::link('Mediums', array("medium/admin", array('Medium[status]' => 'active')))
CHtml::link('Mediums', array("medium/admin", array('Medium%5Bstatus%5D' => 'active'))) 
CHtml::link('Mediums', array("medium/admin", array('Medium' => array('status' => 'active')))) 

但是所有的链接都不正确,所以表格的默认视图是显示所有记录。

创建此类链接的正确方法是什么?

谢谢。

【问题讨论】:

  • 用php还是javascript可以?
  • PHP,我想使用 CHtml::link('Mediums' 因为这是在 Yii 中正确的方法。我只是不知道它的正确格式。

标签: yii yii-components


【解决方案1】:

http://www.yiiframework.com/doc/api/1.1/CHtml#link-detailhttp://www.yiiframework.com/wiki/48/ 对你有用。

CHtml::link(CHtml::encode('Mediums'),array("medium/admin", "status"=>"active"));

然后确保在你的控制器中你有这样的东西:

public function actionAdmin($status)

现在您可以在操作中使用'status'

【讨论】:

  • 谢谢,但我不想要一个名为 status 的变量,我想要一个名为 Medium[status] 的变量。
  • 状态不可变,它是模型Medium 的一个字段。要通过CHtml::link() 传递参数,您需要在控制器的propper 操作中接受它们。就像我在上面输入的一样。 public function actionYourActionInControler($status) 如果你使用 ActiveRecord $model=Medium::model()->findAll('status=:status', array(':status'=>$status));,那么你可以像这样进行操作现在$model 将包含所有带有$status 给定链接参数的记录。现在将此$model 传递给您的视图$this->render('admin',array( 'model'=>$model,));。使用它你的观点并快乐。
  • 你说对了一部分。对于模型和控制器,状态既是列又是变量。我当然可以这样做,但你告诉我这样做,但我不想那样做。我想让我的 Yii 应用程序尽可能接近演示。在他们自己的示例中,Yii 将搜索字段命名为“Post[status]”。这正是我给它们命名的方式。我只是希望能够使用内部 yii CHTML::link() 函数将其作为 GET 变量传输。
  • 我可以从 URL 中的 GET 中获取参数,我无法根据需要创建 URL。
猜你喜欢
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 2016-05-22
  • 2017-08-13
  • 1970-01-01
相关资源
最近更新 更多