0

我知道通常您只会使用管理员中的集成 CRUD 删除按钮,但是出于我的目的,我需要一个实际的删除页面,该页面只有一个字段中的 id 和一个提交按钮,但到目前为止它只产生错误视图所以任何帮助表示赞赏。我试图创建它,就像我的创建和更新页面一样,请看下面的代码:

删除页面的链接:

<?php echo CHtml::link('Delete Article', array('delete', 'id'=>$pageid)); ?>

它产生的链接:

http://local/..../Yii/news/index.php/delete?id=3

控制器:

public function actionDelete($id)
{
$model=$this->loadModel($id);


    if(isset($_POST['news_model']))
    {
        $model->attributes=$_POST['news_model'];
        if($model->save())
            $this->redirect('index');
    }

    $this->render(array('delete', array(
        'model'=>$model,
    ));
}

删除.php:

<h2>Delete a news item</h2>

<?php echo $this->renderPartial('_form2', array('model'=>$model)); ?>

_form2.php

<?php echo $form->errorSummary($model); ?>

<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'news-model-form',
'enableAjaxValidation'=>false,
)); ?>

<div class="form">

<div class="row">
    <?php echo $form->labelEx($model,'id'); ?><br>
    <?php echo $form->textField($model,'id',array('size'=>50,'maxlength'=>128)); ?>
    <?php echo $form->error($model,'id'); ?>
</div><br>

<div class="row buttons">
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Delete a news item'); ?>
</div>

    <?php $this->endWidget(); ?>

    </div><!-- form -->

提前感谢您提供的任何帮助。

4

1 回答 1

3

_form2.php中的 php 语法有错误

<?php echo CHtml::submitButton($model->isNewRecord ? 'Delete a news item'); ?>

更像

<?php echo CHtml::submitButton($model->isNewRecord ? 'Delete a news item':'Delete an old item'); ?>

请参阅PHP中的三元运算符:比较运算符

...但我不明白那句话的重点,对我来说它看起来更像是:

<?php if (!$model->isNewRecord) echo CHtml::submitButton("Delete Record"); ?>

...但是记录在加载时保证不是新的$model=$this->loadModel($id);

此外,在Delete.php

<?php echo $this->renderPartial('_form2', array('model'=>$model)); ?>

会更像

<?php echo $this->renderPartial('_form2', array('model'=>$model), true); ?>

或者

<?php $this->renderPartial('_form2', array('model'=>$model)); ?>

看文档renderPartial(),特别注意它的第三个参数的返回值。事实证明,您实际上是在回显 NULL。这就解释了为什么没有显示。

于 2013-03-14T19:53:50.753 回答