我已经问过了,但是如何访问url中没有id值的视图页面

时间:2016-04-21 05:21:38

标签: php yii2

my view.php

  <?php
    echo 
    Html::beginForm(['contactpersons/update'], 'post',['id' => 'update-form']) .
    '<input type="hidden" name="id" value="'.$model->id.'">
     <a href="javascript:{}" onclick="document.getElementById(\'update-form\').submit(); 
    return false;">Update</a>'. 
    Html::endForm(); 
    ?>   
    <?= Html::a('Delete', ['delete', 'id' => $model->id], [
        'class' => 'btn btn-danger',
        'data' => [
            'confirm' => 'Are you sure you want to delete this item?',
            'method' => 'post',
        ],
    ])
 ?>

我的控制器是

     public function actionView($id)
      {
         $model = $this->findModel($id);
         return $this->render('view', ['model' => $model]);
       }

如何修改此内容,以便在网址中获取没有ID值的视图页。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以像这样更改

public function actionView($id = null) {
    $model = null;
    if ($id !== null) {
        $model = $this->findModel($id);
    }
    return $this->render('view', ['model' => $model]);
}

但是在您的视图中,您执行以下代码:$model->id 当模型没有设置任何东西时,这不会起作用。因此,当$ id为null时,您可以创建一个新模型($model = new ModelClass())。

旁注:这看起来不像是一个视图操作,但更像是一个编辑操作,因此可能会将您的操作更改为actionEdit()

答案 1 :(得分:0)

您可以通过两种方法将数据发送到浏览器 - POST和GET。因此,如果你想隐藏id参数,那么你需要将你的id作为POST参数发送,这是一个不好的解决方案 - 它很难实现,因为POST在提交表单时通常会发送。